虚关键字在函数声明中的位置
position of virtual keyword in function declaration
在函数声明中将virtual
关键字放在返回值类型之前还是之后有区别吗?
virtual void DoSomething() = 0;
void virtual DoSomething() = 0;
在重构一些遗留代码时发现了void virtual
语法,并怀疑它是否正在编译。。。
这两个语句是等价的
但第一种更为传统。因为,通常强制字段与任何语法(即示例中的函数原型)保持最接近。
virtual
是一个可选关键字(不过对于纯virtual
来说是必需的)。但是,返回类型(此处为void
)是一个强制关键字,它始终是必需的。所以人们把virtual
放在最左边,return
类型更接近函数签名。
另一个例子:我通常在下面的代码中看到,出于同样的原因,1st语法更受欢迎:
const int i = 0; // 1
int const i = 0; // 2
两者没有区别,C++语法允许虚拟关键字出现在返回类型之前和之后。把它放在声明的第一位是常见的做法。
这两种格式都可以使用,但标准指定了第一种格式。
参考:
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
刚刚测试:
双向编译。
通常,virtual放在返回类型之前。
点击此处阅读更多信息:http://msdn.microsoft.com/en-us/library/0y01k918%28v=vs.80%29.aspx
相关文章:
- 声明指针时更改星号的位置
- 我们可以在声明中的任何位置放置"typedef"说明符吗?
- 使用 (c++11) 声明类型时放置 __declspec(dllimport) 关键字的位置
- ClangTool 如何获取变量声明中模板参数的位置?
- 在C++中声明使用的位置是否有良好做法
- C 1Z标准如何定义模板功能声明中属性的正确位置
- 如何在另一个类函数中使用类,而不依赖于它在C++中的声明位置
- 在C 中的类声明和实现的位置混淆
- 会员声明中的位置打破代码
- 在声明中可以放置存储类说明符的位置
- 说明 资源路径位置类型 'UINT16_MAX' 未在此范围内声明
- 变量声明位置的编译器优化
- 为什么需要在多个位置声明一个函数
- 全局声明QStringlist变量,使用QFileDialog获取位置路径并将其打印到lineEdit并在QProces
- 仅在 Eclipse 中不识别在一个位置的 ofstream 声明
- 易失性关键字在C++中成员函数声明中的位置
- basic_string不允许在<TCHAR>声明的位置之外进行定义
- 虚关键字在函数声明中的位置
- C++:非成员函数的定义/声明的位置
- 声明变量(内存中的精确位置)