Béb*_*bul 34 c++ abstract-class pure-virtual
在GCC上编译时,我得到错误:函数定义上的纯指定符,但是当我使用VS2005编译相同的代码时却没有.
class Dummy {
//error: pure-specifier on function-definition, VS2005 compiles
virtual void Process() = 0 {};
};
Run Code Online (Sandbox Code Playgroud)
但是当这个纯虚函数的定义不是内联时,它的工作原理是:
class Dummy
{
virtual void Process() = 0;
};
void Dummy::Process()
{} //compiles on both GCC and VS2005
Run Code Online (Sandbox Code Playgroud)
错误意味着什么?为什么我不能内联?如第二个代码示例所示,避免编译问题是否合法?
Dim*_*ima 31
好的,我刚刚学到了一些东西.纯虚函数必须声明如下:
class Abstract
{
public:
virtual void pure_virtual() = 0;
};
Run Code Online (Sandbox Code Playgroud)
它可能有一个机构,但在声明时包含它是非法的.这意味着要拥有一个正文,必须在类之外定义纯虚函数.请注意,即使它有一个主体,该函数仍必须被派生自的任何具体类所覆盖Abstract.Abstract::pure_virtual()如果需要,他们可以选择明确调用.
细节在这里.
小智 12
这个语法:
virtual void Process() = 0 {};
Run Code Online (Sandbox Code Playgroud)
不是合法的C++,但VC++支持.究竟为什么标准不允许这一点对我来说从未如此明显.你的第二个例子是合法的.
| 归档时间: |
|
| 查看次数: |
13876 次 |
| 最近记录: |