假设我正在编写C ++类。该课程包含以下字段:
在析构函数中,我知道我必须通过调用delete
来new
我之前所声称的任何内容。在这种情况下,我知道我必须释放我用于int数组的空间。字符串的内存怎么样?我知道我不负责释放它的内存,因为我没有调用new
来分配它,但它如何被释放? C ++什么时候调用它的析构函数?
答案 0 :(得分:2)
一旦实例析构函数完成,就会自动调用成员变量的析构函数。
答案 1 :(得分:2)
字符串的内存怎么样?我知道我不负责释放它的内存,因为我没有调用new来分配它,但它如何被释放?
你的类的析构函数隐式调用std::string
的析构函数,后者反过来处理释放自己的资源。没什么可担心的。
C ++什么时候调用它的析构函数?
当你的类'对象的析构函数被调用时。这意味着当该对象超出范围时,或者delete
在new
创建它时指向new
。
我以某种方式理解你的问题。您可能认为new
递归new
是您班级的成员。不,它没有这样做。除非您的类本身对成员变量delete
,否则您需要在其上调用{{1}}。
答案 2 :(得分:1)
当变量超出范围时,回收内存。