C++纯虚函数可以有定义,并且能够调用
class A
{
public:
virtual ~A()=0;
};
对于这样一个纯虚类,它是不可以被继承的,因为编译器总是会为派生类安插一个基类的析构函数的调用。
解决方法有二个:
1)将析构函数改成非纯虚
2)为纯虚析构函数加上定义
A::~A(){}
纯虚函数如果有定义体,则它可以在其派生类中被调用
class B:public A
{
public:
void test(){A::~A();}
};
C++纯虚函数可以有定义,并且能够调用
class A
{
public:
virtual ~A()=0;
};
对于这样一个纯虚类,它是不可以被继承的,因为编译器总是会为派生类安插一个基类的析构函数的调用。
解决方法有二个:
1)将析构函数改成非纯虚
2)为纯虚析构函数加上定义
A::~A(){}
纯虚函数如果有定义体,则它可以在其派生类中被调用
class B:public A
{
public:
void test(){A::~A();}
};