-1

假设我正在编写一个 C++ 类。该类具有以下字段:

  • 一个整数。
  • 一个 C++ 字符串
  • 动态调整大小的整数数组和指向它的指针。

在析构函数中,我知道我必须delete通过调用new. 在这种情况下,我知道我必须释放用于 int 数组的空间。字符串的内存呢?我知道我不负责释放它的内存,因为我没有调用new分配它,但是它是如何被释放的呢?C++ 什么时候调用它的析构函数?

4

3 回答 3

2

字符串的内存呢?我知道我不负责释放它的内存,因为我没有调用 new 来分配它,但是它是如何被释放的呢?

您的类的析构函数隐式调用std::string' 析构函数,后者又处理释放自己的资源。没有什么可担心的。

C++ 什么时候调用它的析构函数?

当你的类的对象的析构函数被调用时。这意味着当该对象超出范围或delete在由new.

我以某种方式理解你的问题。您可能会认为new递归news 是您班级的成员。不,它不是那样做的。除非您的类本身new对成员变量进行处理,否则您需要调用delete它们。

于 2013-07-04T02:55:06.253 回答
2

一旦实例析构函数完成,成员变量的析构函数就会自动调用。

于 2013-07-04T02:52:19.663 回答
1

当变量超出范围时,该内存将被回收。

于 2013-07-04T02:52:35.290 回答