virtual 关键字放在返回值类型之前或之后的函数声明中有什么区别吗?

virtual void DoSomething() = 0;
void virtual DoSomething() = 0;

在重构一些遗留代码时发现了 void virtual 语法,并想知道它是否正在编译......

最佳答案

这两种说法是等价的。
但第一个更传统。因为,通常 强制字段 保持 最接近 任何语法(即示例中的函数原型(prototype))。
virtual 是一个可选关键字(不过它是纯 virtual 所必需的)。然而,返回类型(这里是 void )是一个强制关键字,它始终是必需的。所以人们将 virtual 保持在最左侧,而 return 类型更接近函数签名。

另一个例子:我通常看到在下面的代码中,出于同样的原因,第一种语法更受欢迎:

const int i = 0;  // 1
int const i = 0;  // 2

关于c++ - virtual关键字在函数声明中的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9598528/

10-12 20:38