我在头文件中有抽象基类和派生类。是否可以在派生类之外定义纯虚函数?
例如:
//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
}
上述方法是否正确/可行?
答案 0 :(得分:3)
这不仅是可能的,而且是标准做法。您唯一需要担心将函数定义放入标题中的方法是使用模板。
答案 1 :(得分:1)
是的,这是可能的。你可以在课堂外定义它们,如果那就是你想问的那个。
答案 2 :(得分:0)
是否可以在派生类之外定义纯虚函数?
该函数在派生类中不是纯虚函数,它只是基类中的纯虚函数。
派生类会覆盖该函数,并且没有pure-specifier(函数声明符之后的=0
位),因此DerivedClass::vfunc()
不是纯虚拟的,因此必须如果在程序中使用了某个定义。将其定义在与标题不同的文件中是完全正常的。