设为首页 加入收藏

TOP

C++ 小心你的析构函数不会执行
2013-05-14 09:25:30 来源: 作者: 【 】 浏览:197
Tags:  小心 函数 不会 执行

    #include <string>

    #include <iostream>

    using namespace std;

    class Student

    {

    public:

    int num ;

    string strname;

    Student(int num,string name)

    {

    this->num=num;

    this->strname=name;

    }

    ~Student()

    {

    cout《"num:"《this->num《"name"《this->strname《endl;

    }

    };

    int _tmain(int argc, _TCHAR* argv[])

    {

    Student stu1(1,"Li Ming");//对象定义在栈上,所以程序结束时会自动析构哦;

    Student *pstu2=new Student(2,"Wang qing");//对象定义在堆上,除非delete否则不析构

    //(1)

    return 0;

    }

    上面两种定义都定义了对象,但是执行结果是下面的:

 

    上面没有调用delete删除堆上的对象,所以程序即使结束了,对象是不会自动析构的,这就产生了垃圾;如何这些是一些资源文件或者内核对象,你的程序迟早挂掉;

    在(1)处加入delete pstu2;

 

    所以,使用类定义的对象是能够自动析构的;使用类通过new出来的对象,是需要delete的,你不delete,你SOCKET、多线程编程(www.cppentry.com)会出问题的。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇背包问题的空间优化 下一篇C++中容易忽略的知识

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: