C++ 技术中心

   :: 首页 :: 联系 ::  :: 管理
  160 Posts :: 0 Stories :: 87 Comments :: 0 Trackbacks

公告

郑重声明:本BLOG所发表的原创文章,作者保留一切权利。必须经过作者本人同意后方可转载,并注名作者(天空)和出处(CppBlog.com)。作者Email:coder@luckcoder.com

留言簿(27)

搜索

  •  

最新随笔

最新评论

评论排行榜

一.虚析构函数说明
    一般来说,如果有被子类继承的类,尽可能的加上关键字virtual,特别是以下情况,可能没有调用子类的析
构造成内存泄露.

二.代码示例:
#include <iostream>
#include 
<conio.h>
using namespace std;

class CBase
{
public:
    
//注意有加virtual与不加virtual运行情况
    virtual ~CBase()
    
{
        cout
<<"CBase destructor!"<<endl;
    }

}
;

class CChild:public CBase
{
public:
    
~CChild()
    
{
        cout
<<"CChild destructor!"<<endl;
    }

}
;


int main(int argc,char *argv[])
{
    
/*
    以下打印结果是
    CChild destructor!
    CBase destructor!
    
*/

    CChild  
*pchild = new CChild();
    delete pchild;


    
/*
    1.以下代码有加virtual运行结果是:
    CChild destructor!
    CBase destructor!
    
    2.去掉virtual运行结果如下:
    CBase destructor!
    可以看到,没有调用CChild的析构函数
    
*/

    CBase 
*pBase = new CChild();
    delete pBase;

    _getch();
    
return 0;
}


posted on 2011-03-11 15:10 C++技术中心 阅读(1509) 评论(0)  编辑 收藏 引用 所属分类: C++ 基础

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理