众所周知,在实现多态的过程中,一般将基类的析构函数设为virtual,以便在delete的时候能够多态的链式调用。那么析构函数是否可以设为纯虚呢?
class CBase
{
public:
CBase()
{
printf("CBase()\n");
}
virtual ~CBase() = 0;
};
答案是可以,那么这样实现的目的是什么呢?当然是避免实例化。
但因为派生类不可能来实现基类的析构函数,所以
基类析构函数虽然可以标为纯虚,但是仍必须实现析构函数,否则派生类无法继承,也无法编译通过。