in基pure virtual destructor
类应该有一个定义。否则编译器将在链接时从派生类析构函数生成对基类析构函数的调用,并导致链接错误。
我试图在基类中定义纯虚拟析构函数,如下所示:
class base
{
public:
base()
{
cout << "constructor in base class\n";
}
virtual ~base()=0
{}
};
这给出了编译错误:
错误:函数定义上的纯说明符
然后我尝试在基类之外定义函数,如下所示:
class base
{
public:
base()
{
cout << "constructor in base class\n";
}
virtual ~base()=0;
};
base::~base()
{
}
这消除了编译错误,它的行为符合我的理解。
但我的问题是在基类之外定义纯虚析构函数如何消除编译错误?