虚析够函数

和虚函数相似
#include<iostream>
using namespace std;
class ClxBase{
        public:
                ClxBase() {};
                virtual ~ClxBase() {
                        std::cout << "父类析够函数"<<std::endl;
                }

                virtual void DoSomething(){
                        std::cout << "父类方法" << std::endl;                             
                }
};
class ClxDerived : public ClxBase{
        public:
                ClxDerived() {};
                ~ClxDerived() {
                        std::cout << "子类析够函数" << std::endl;                                   
                }
                void DoSomething() {
                        std::cout << "子类方法" << std::endl;                             
                }
};
int main(){
        ClxBase *pTest = new ClxDerived;
        pTest->DoSomething();
        delete pTest;
        return 0;
}
输出如下:
子类方法
子类析够函数
父类析够函数

当去掉基类的virtual时,子类的析够函数无法调用。
输出如下:
子类方法
父类析够函数

所以虚析够函数的作用:
当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用。

posted @ 2017-04-11 20:36  倾耳听  阅读(122)  评论(0编辑  收藏  举报