gpt4 book ai didi

c++ - 为数组中的每个对象调用析构函数

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

我有一个对象数组:

Square sq[81];

我认为它使用默认构造函数来创建每个。

当我通过 for 循环对每个对象进行初始化时,它会为数组中的每个 Square 对象调用析构函数。

for (int k=0; k<9; k++) {
for(int j=0; j<9; j++) {
sq[count++] = Square(k, j);
}
}

调用Square(k, j)时,是否删除了sq[]中的对象并创建了一个新对象?

最佳答案

sq[count++] = Square(k, j);

When Square(k, j) is called, is it deleting the object in sq[] and creating a new one?

没有。

Square(k, j) 创建一个新的临时 对象并= 将其复制到旧对象中。然后临时对象被销毁,因为它不再需要并且超出范围。


顺便说一句,你实际上并没有在循环中初始化任何东西(我的意思是除了那个临时的);你只是在事后分配。

关于c++ - 为数组中的每个对象调用析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7485606/

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