在 GCC 上编译时我得到了错误:函数定义上的纯说明符,但当我使用 VS2005 编译相同的代码时则不然。
class Dummy {
//error: pure-specifier on function-definition, VS2005 compiles
virtual void Process() = 0 {};
};
但是当这个纯虚函数的定义不是内联时,它就可以工作:
class Dummy
{
virtual void Process() = 0;
};
void Dummy::Process()
{} //compiles on both GCC and VS2005
错误是什么意思?为什么我不能内联完成?如第二个代码示例所示规避编译问题是否合法?
好吧,我刚刚学到了一些东西。纯虚函数必须声明如下:
class Abstract
{
public:
virtual void pure_virtual() = 0;
};
它可能有一个主体,尽管在声明时包含它是非法的。这意味着要拥有主体,纯虚函数必须在类外部定义。请注意,即使它有主体,该函数仍然必须由派生自的任何具体类覆盖Abstract
。他们只能选择打电话Abstract::pure_virtual()
如果他们需要的话,明确地。
详细信息是here http://en.wikipedia.org/wiki/Virtual_function#C.2B.2B_2.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)