假设我们有一个方法。该方法内部是一个包含 n 次迭代的循环,其中声明并初始化了一个对象 myObj

  • 它被构建和销毁了多少次?一次,还是n次?
  • 何时进行构造 - 何时执行该行,或何时
    程序调用方法?
  • 破坏何时发生?在每次迭代结束时,在
    for 块的结尾,还是方法的结尾?

  • 例子:
    void foo()
    {
       for (int i = 0; i < 100; i++)
       {
           A myObj();
       }
    }
    

    最佳答案



    n次。



    执行该行时。



    当离开对象的作用域时;对于您的示例代码,在每次迭代结束时。

    顺便说一句:A myObj(); 不是对象的定义,而是函数的声明。您可能指的是 A myObj;A myObj{}; (C++11 起)。搜索 most vexing parse 了解更多详情。

    关于c++ - 循环中声明的对象是否只构造一次?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42896910/

    10-11 22:36
    查看更多