在C++ 11中添加了override说明符和final说明符.它们与添加到C++ 11中的其他说明符(例如constexpr和decltype)不同,因为它们不是关键字,因此可用作标识符:
int main()
{
int override = 0 ; // Ok
int final = 0 ; // Ok
//int constexpr = 0 ; // Error
}
Run Code Online (Sandbox Code Playgroud)
它们被称为具有特殊含义的标识符,在C++ 11标准部分2.11 [lex.name](强调我的)草案中有所涉及:
表3中的标识符在出现在特定上下文中时具有特殊含义.当在语法中引用时,显式地使用这些标识符而不是使用标识符语法生成.任何关于给定标识符是否具有特殊含义的歧义都被解析为将该标记解释为常规标识符.
和表3 - 具有特殊含义列表的标识符都覆盖和最终.
为什么这两个说明符最终成为具有特殊含义的标识符而不是关键字?