class MyClass
{
};
void foo
{
MyClass arr[10];
}
Run Code Online (Sandbox Code Playgroud)
我想知道函数返回时数组对象的销毁顺序。
我阅读了关于它的更有效的 C++,它说析构函数的调用顺序与构造函数的顺序相反,如下所示:
for(int i = 9 ; i >= 0 ;i--)
{
arr[i].MyClass::~MyClass();
}
Run Code Online (Sandbox Code Playgroud)
有人能告诉我原因吗?
这是 C++ 析构函数调用逆序逻辑的延续。当堆栈分配的对象被销毁时,会以相反的顺序进行,以促进 RAII。尽管这对于数组元素来说并不是真正必要的(它们都是使用默认构造函数构造的,并且构造/销毁的任何顺序都可以),但为了一致性而对它们进行了相同的处理。