相关疑难解决方法(0)

为什么覆盖和最终标识符具有特殊含义而不是保留关键字?

在C++ 11中添加了override说明符final说明​​符.它们与添加到C++ 11中的其他说明符(例如constexprdecltype)不同,因为它们不是关键字,因此可用作标识符:

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 - 具有特殊含义列表的标识符覆盖最终.

为什么这两个说明符最终成为具有特殊含义的标识符而不是关键字

c++ keyword c++11

29
推荐指数
1
解决办法
1424
查看次数

在C++ 98,C++ 11交叉编译代码中处理覆盖的优雅方式?

我有一些代码具有可选的内置代码,试图检测C++ 0X.让我假装这是有效的(讨论有多糟糕,如何不跨越平台超出这个问题的范围).让我们说它有一个#define DETECTCXX0X.iff它是C++ 0X.

这样做有多糟糕:

#ifndef DETECTCXX0X
#define override
#endif
Run Code Online (Sandbox Code Playgroud)

你还有其他选择吗?

(我想正确的做法是不使用显式覆盖).

c++ macros overriding c++11

0
推荐指数
1
解决办法
1133
查看次数

标签 统计

c++ ×2

c++11 ×2

keyword ×1

macros ×1

overriding ×1