派生类之外的纯虚函数定义

时间:2012-10-18 15:55:18

标签: c++

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

例如:

//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
}

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

是的,这是可能的。你可以在课堂外定义它们,如果那就是你想问的那个。

答案 2 :(得分:0)

  

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

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

派生类会覆盖该函数,并且没有pure-specifier(函数声明符之后的=0位),因此DerivedClass::vfunc()不是纯虚拟的,因此必须如果在程序中使用了某个定义。将其定义在与标题不同的文件中是完全正常的。