读书笔记:virtual关键字分析

来源:互联网 发布:淘宝神笔模板怎么用 编辑:程序博客网 时间:2024/06/06 12:27

1、当一个类被用来作为基类的时候,才会把析构函数写成虚函数 --注意是基类

样例:没有基类

class CBase { public:     CBase(){         OutputDebugStringA("CCBase\n");     }     //基类没有声明virtual     ~CBase(){         OutputDebugStringA("~CCBase\n");     }     private:     int number; }; class CTest:public CBase { public:     CTest():CBase(){          OutputDebugStringA("CCTest\n");     }      ~CTest() {         OutputDebugStringA("~CCTest\n");             } };int _tmain(int argc, _TCHAR* argv[]){    CTest* objTest = new CTest;    CBase* p = objTest;    delete p;        //只输出:~CCBase    return 0;}

从上面样例知道,在析构的时候在CBase 的虚函数表里面找不到虚构函数,说明它不会进行多态处理,只析构的基类。如果CBase的析构函数加上virtrual关键字,那么先打印~CTest,然后打印~Cbase。



0 0
原创粉丝点击