class xyz{
...
...
};
while(i<n){
xyz ob;
...
...
}
在重新分配内存之前,是否需要销毁早期的对象?
答案 0 :(得分:8)
没有
ob
是堆栈分配的对象,因此自动管理自己的生命周期。它是在您声明它的地方构建的,在"}"
处被破坏。while
次迭代都是单独的{ ... }
范围,因此每次迭代都会构造和销毁该对象。答案 1 :(得分:5)
不,它的范围仅限于while循环。
答案 2 :(得分:4)
答案 3 :(得分:3)
没有。 ob
的范围在结束时结束。当编译器超出范围时,编译器会自动在基于堆栈的对象上调用析构函数。
答案 4 :(得分:3)
在每次迭代中,都会创建一个全新的对象。碰巧他们都有同名的xyz。在迭代结束时,当前对象通过其destuctor被销毁,并且在下一次迭代中,创建具有相同名称的新对象。所以你的代码非常好。 HTH