C++ 类中的默认析构函数是否会自动删除代码中未显式分配的成员?例如:
class C {
public:
C() {}
int arr[100];
};
int main(void) {
C* myC = new C();
delete myC;
return 0;
}
删除 myC 会自动释放 myC 的 arr 吗?或者我是否需要编写 C 的析构函数来显式地执行此操作?
构造函数(在没有任何构造函数初始化列表) 为每个子对象调用默认构造函数。
由于您没有基类并且您的成员变量是原始类型,因此它根本不会执行任何操作。
与析构函数相同。您的对象是隐式编译器生成的,因为您尚未声明它,并且它将为每个子对象调用析构函数。这又是微不足道的,因为您唯一的子对象是基元的聚合。
现在,当您删除该类时,该类的所有内存都将被释放。由于数组嵌入在类中,因此它是同一内存区域的一部分,并且将同时释放。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)