补楼上所述,所谓“对象销毁”,意思就是当以下两种情况发生时,对象即将被销毁,销毁前的最后一刻调用析构函数:
对于分配在堆栈上的对象,如 CSerial c,当离开其作用域(比如某函数里创建的c对象,在函数姐返回前)发生对象销毁。
对于分配在堆上的对象,如CSerial* p=new CSerial();当你调用delete p指令时,发生对象销毁。
析构函数一般情况下不需要声明。但是本着谁在堆上分配对象,谁负责销毁的原则,如果一个类的全局变量里有指向一个分配在堆里的对象,那么在析构函数里释放他。比如:
class CSerial
{
private:
A* a;
public:
CSerial()
{
a=new A();
}
~CSerial()
{
if(a!=null) delete a;
}
};
“~”这个符号所代表的函数为析构函数,
在C++的面向对象编程中,都会有一个以上的构造函数形如CSerial();
和一个析构函数形如~CSerial();
它的作用很简单,就是在销毁对象时,释放对象的内存空间。
还有什么不懂的,可以继续问