在函数声明中,无论我是否将virtual
关键字放在返回值类型之前还是之后,是否会有任何区别?
virtual void DoSomething() = 0;
void virtual DoSomething() = 0;
在重构一些遗留代码时,我发现了void virtual
语法,我想知道它是否能够编译通过...
在函数声明中,无论我是否将virtual
关键字放在返回值类型之前还是之后,是否会有任何区别?
virtual void DoSomething() = 0;
void virtual DoSomething() = 0;
在重构一些遗留代码时,我发现了void virtual
语法,我想知道它是否能够编译通过...
这两个语句是等效的。
但第一个语句更加传统。因为通常必填字段会被放在任何语法(例如你的示例中的函数原型)的最近处。
virtual
是一个可选关键字(虽然对于纯virtual
来说是必需的)。然而返回类型(这里是void
)是一个强制关键字,总是需要的。所以人们将virtual
放在最左边,将return
类型略微靠近函数签名。
另一个例子:出于同样的原因,我通常看到以下代码中第一个语法更受欢迎:
const int i = 0; // 1
int const i = 0; // 2
这两种格式都可以使用,但标准规定第一种格式。
参考资料:
C++03 7.1 规范符号
在声明中可以使用的规范符号有:
decl-specifier:
storage-class-specifier
type-specifier
function-specifier
friend
typedef
decl-specifier-seq:
decl-specifier-seqopt decl-specifier
而且,function-specifier
的更多解释在以下章节中:
7.1.2 函数说明符
函数说明符只能用于函数声明中。
function-specifier:
inline
virtual
explicit
刚刚测试过:
两种方式都可以编译。
通常在返回类型之前放置虚拟关键字。
在此处阅读更多信息:http://msdn.microsoft.com/en-us/library/0y01k918%28v=vs.80%29.aspx