C++11中添加了override specifier和final specifier。它们与其他添加到C++11的指定符(如constexpr和decltype)不同,因为它们不是关键字,因此可以用作标识符。请注意保留HTML标签。
int main()
{
int override = 0 ; // Ok
int final = 0 ; // Ok
//int constexpr = 0 ; // Error
}
这些被称为具有特殊含义的标识符,在C++11标准草案第2.11
节[lex.name]中进行了解释(强调我的):
表3中的标识符在特定上下文中具有特殊含义。在语法中引用这些标识符时,显式使用这些标识符而不是使用标识符语法生成。对于给定标识符是否具有特殊含义的任何歧义都将解决为将令牌解释为常规标识符。
表3 -- 具有特殊含义的标识符列出了override和final。
为什么这两个限定符最终成为具有特殊含义的标识符而不是关键字?
#define
的。不过 @Shafik 可能需要澄清一下这个问题。 - T.C.N3163
。 - Shafik Yaghmour