c++如何删除对象

如题所述

C++中删除对象用:DELETE 命令。

下面是个简单的例子以便于理解,例子中动态生成和删除一个Lable:

//全区定义:
TLabel *LSLable; //自定义一个Lable指针

//按钮1中的代码:
if (!LSLable){//如果LSLable为0的话执行下面代码
LSLable = new TLabel(this);//实例化LSLable,并让附在当前进程上。
LSLable->Parent = this;//让LSLable附在当前窗体上
LSLable->Top = 0;//让LSLable的纵坐标为0
LSLable->Left = 0;//让LSLable的横坐标为0
LSLable->Caption = "AAAAAAAAAAAAAAAAAAAAAAAAA";//让LSLable上面显示一串字符
}

//按钮2中的代码:
if (LSLable){//如果LSLable不为0的话执行下面代码
    delete LSLable;//删除LSLable指向的这个Lable对象
    LSLable = 0;//置LSLable的值为零(将LSLable指针指向地址为0的地方)
}



相关知识点延伸:

1、在C++中,删除对象一般指删除new出来的对象。当然,我们在设计程序时,在“所见即所得”中放置的界面、控件,其实也是程序运行中new出来的,也一样是可以删除的。

2、注意的是,定义的某类对象的某个指针是不能被删除的,它只是一个指针变量而已,也不占什么。

3、删除完某个new出的对象后,原指向这个对象的指针建议置零,当然,你不置零也可以,但一定要清楚地知道,它被重新指向有效的对象前(一般是重新实例化),是没法正常使用的,如果使用就会报错。

4、删除对象的目的一般是释放对象占用的内存空间,或使对象不再动作。new出来的对象只要没有被delete,它就一直在程序中存在着,所以,如果有重复的new出对象的代码,一般就要考虑delete,否则很容易出现程序吃内存越来越大的现象。

5、特别提示:并不是在局部中的变量new出的就会自动释放!是否会释放,不同的编译软件可能会有不同的结果,需要你自已试。但个人建议只要是有重复new的代码,就应有对应的delete。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-02-28
如果没用的话,到对象的生存期结束对象会自己调用析构函数释放。
如果是用new 创建的对象,需要用delete删除。本回答被网友采纳
第2个回答  2015-11-13

    删除单个对象

    class A;

    A* a1=new A();

....

delete a1;


2.删除实例数组

A* a1=new A[10];

....

delete[] a1;

第3个回答  2015-11-20
对象自有类的析构函数来处理,不需要手动删除
第4个回答  2014-04-04
您好,你说的是什么对象?如果是动态申请的,可以使用delete 删除,其他的局部变量是由编译器来释放,全局变量只有程序退出后,操作系统回收。
希望能帮到你!
望采纳
相似回答