我可以用类对象做到这一点吗?

时间:2010-10-10 09:28:29

标签: c++ class

class xyz{

...
...
};

while(i<n){
           xyz ob;
           ...
           ...
}

在重新分配内存之前,是否需要销毁早期的对象?

5 个答案:

答案 0 :(得分:8)

没有

  1. ob是堆栈分配的对象,因此自动管理自己的生命周期。它是在您声明它的地方构建的,在"}"处被破坏。
  2. 由于每个while次迭代都是单独的{ ... }范围,因此每次迭代都会构造和销毁该对象。

答案 1 :(得分:5)

不,它的范围仅限于while循环。

答案 2 :(得分:4)

  1. 您的意思是定义一个对象未声明(从问题中删除)。
  2. 是的,你可以做到。
  3. 不,你不需要销毁它,因为它会被自动销毁。内存分配在堆栈中,无论如何都会被重用。在许多情况下,编译器甚至可以优化它。并且 HOW 你能不能重新分配内存?

答案 3 :(得分:3)

没有。 ob的范围在结束时结束。当编译器超出范围时,编译器会自动在基于堆栈的对象上调用析构函数。

答案 4 :(得分:3)

在每次迭代中,都会创建一个全新的对象。碰巧他们都有同名的xyz。在迭代结束时,当前对象通过其destuctor被销毁,并且在下一次迭代中,创建具有相同名称的新对象。所以你的代码非常好。 HTH

相关问题