在父类定义了纯虚函数,在子类对其实现,编译时出现错误:
undefined reference to '**********'
原因:
使用的纯虚函数的时机,应该在子类对象创建之后再调用。
例如下面代码:
class A
{
public:
A()
{
func(); // 错误出现语句
}
virtual ~A() = default;
virtual int func() = 0;
};
class AA : public A
{
public:
AA() = default;
virtual ~AA() = default;
virtual int func() override
{
printf("func.\n");
return 0;
}
};
如果想在构造函数中调用该函数,可以在子类构造函数的实现体内调用