分配以下对象属性在哪里

Where is the following object property allocated?

本文关键字:属性 在哪里 对象 分配      更新时间:2023-10-16

我有以下代码,我认为ARR属性应分配在堆上,因为 test test 对象分配在堆上。但是由于某种原因,即使我不明确地称其为destuructor,即使我不称呼它。有解释吗?

代码:

class A {
public: ~A(){
     cout<< "detor A"<< endl;
 }
};
class C {
    A arr[10];
public: ~C(){
       // delete[]arr;
    }
};
int main() {
    C* test = new C();
    delete test;
}

输出:

detor A
detor A
.
.

当对象必须被破坏并独立于分配对象的方式时,将调用对象的破坏者。

例如:

  • 当本地对象超出范围时会自动破坏
  • new分配的对象被delete
  • 销毁
  • 在其封闭对象的破坏过程中销毁了一个成员对象

最后的情况会导致您观察到的行为:您的delete test,它要求arr被销毁,这要求其每个项目都被销毁。