gpt4 book ai didi

c++ - 对象数组的销毁顺序

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:49:25 24 4
gpt4 key购买 nike

class MyClass
{
};

void foo
{
MyClass arr[10];
}

我想知道函数返回时数组对象的销毁顺序。

我读过关于它的 More Effective C++,它说析构函数是反向调用的构造函数的顺序如下:

for(int i = 9 ; i >= 0 ;i--)
{
arr[i].MyClass::~MyClass();
}

谁能告诉我这是什么原因?

最佳答案

这是 C++ 的析构函数调用哲学的倒序延续。当堆栈分配的对象被销毁时,它以相反的顺序完成以促进 RAII。尽管这对于数组元素来说并不是真正必需的(它们都是使用默认构造函数构造的,并且构造/销毁的任何顺序都可以),但为了一致性而对它们进行了相同的操作。

关于c++ - 对象数组的销毁顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1781802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com