基类析钩函数要加virtual变为虚函数

来源:互联网 发布:zknu教务网络管理系统 编辑:程序博客网 时间:2024/06/07 02:37

基类析钩函数要加virtual

基类析钩函数加virtual有很大的好处,其中最大就是可以减少内存泄露!因为多态性,下面我们可以通过一个例子来说明下:
class CBase
{
};
clase CChild:public CBase
{

};
CBase* pBase;
CChild C;
pBase = &C;//多态性,父类指针指向子类
上面的关系就是利用多态性,把父类指针指向子类。像这种情况,如果要是基类的析钩函数没有加virtual的话,则释放的时候pBase会调用基类的析钩函数,但此时CChild的析钩函数不会被调用,而CChild的内存一定会比CBase大,故会造成内存的泄露!而如果是加了virtual的话,则pBase释放的时候会先调用CChild析钩函数,再调用pBase的析钩函数,这样一来保证内存完全回收!
0 0