我们在初始化一个类的时候,这个类的"构造函数" 首先被执行了,也就是说 "构造函数"是开始时执行的,而"析构函数"函数正和它相反,"析构函数"是结束时执行的.
当你用new实例化出来一个对象的时候,可以用delete 来销毁这个类的对象,程序就会自动调用"析构函数".也就是说delete是和new配合使用的,"new实例化,delete 销毁.
没有实用new实例化出来的对象 程序会自动调用 "析构函数".
给你个例子吧.
class obj{
public:
obj(){
cout<<"出征啦~~";
}
~obj(){
cout<<"收兵啦";
}
};
void main(){
obj sta; //obj *sta=new obj();
// delete sta;
}
我燥!有机会学不好好学,就md来这里请教?
a肯定是对的,delete对无效地址不影响地处理了。
本来动态必须手动释放的,可构造函数没有new,那么析构不用处理,处理了也不会错。
其实b好象也对。自己做的,构造没new,析构没有delete,有错么?
c++的析构期待编译器?
还不对。。。如果引用了外部new出来的,必须指定为null!
否则。。。一样的要么越界,要么内存不能释放!
反正哥只选a地
析构函数释放声明的类对象。
delete释放用new动态内存分配的对象,指针等。。。