4

我在头文件中有抽象基类和派生类。是否可以在派生类之外定义纯虚函数?

例如:

//file .h
class Baseclass
{
public:
    virtual int vfunc() = o;
   //assume Ctor and Dctor
};
class Derivedclass : public Baseclass
{
public:
    int vfunc();
    //assume Ctor and Dctor
};

现在在 cpp 文件中:

#include <file.h>
int Derivedclass :: vfunc()
{
    // Body of the function
}

上述方法是否正确/可能?

4

3 回答 3

3

这不仅是可能的,而且是标准做法。您唯一需要担心将函数定义放入标题中的是模板。

于 2012-10-18T16:01:30.770 回答
1

对的,这是可能的。你可以在课堂之外定义它们,如果你想问的话。

于 2012-10-18T15:59:07.370 回答
0

是否可以在派生类之外定义纯虚函数?

该函数在派生类中不是纯虚函数,它只是在基类中是纯虚函数。

派生类覆盖函数并且没有纯说明符(=0函数声明符之后的位),因此DerivedClass::vfunc()不是纯虚拟的,因此如果在程序中使用它必须在某处定义。在与标头分开的文件中定义它是完全正常的。

于 2012-10-18T16:04:58.973 回答