c++ - 使用复制构造函数创建的对象的生命周期

标签 c++ copy-constructor

我使用 C++。假设我写了下面的代码:

struct node
{
    int sum;
    int min;
};

vector<node> arrnode;

for(int j=0;j<n;j++)
{
     node n1;

     n1.sum=0;
     n1.min=0;
     arrnode.push_back(n1);
}

我知道 n1 是一个局部变量,当我从 xth 移动到 for 循环中“j”的(x+1) 计数。但是通过调用n1 并被插入 vector arrnode。是不是只有arrnode被销毁才会被销毁?

最佳答案

Will it be destroyed only when arrnode is destroyed?

是的。 std::vector 实现 RAII idiom ,当 arrnode 超出范围时,arrnode 的所有元素都将被销毁。

如果你只想用相同的值初始化arrnode,只需通过以下方式构造它:

vector<node> arrnode{n, {0,0}};

如果你想用不同的值初始化:

for(int j=0;j<n;j++)
{
   arrnode.push_back({j,j});
}

这将使代码更简洁、更快速。

关于c++ - 使用复制构造函数创建的对象的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17771926/

相关文章:

c++ - 在对象初始化后用隐式转换而不是赋值运算符调用构造函数有什么意义?

c++ - 复制构造函数不起作用

c++ - 智能指针和复制构造函数

c++ - 从抽象类派生的类的对象应该在自由存储中?

c++ - 无法推导具有嵌套类型的模板函数

C++类继承问题

c++ - 复制构造函数和运算符重载 : C++

c++ - 从析构函数调用线程 vector

c++ - 创建没有指定大小的对象数组

c++ - 将 std::string 放入 char[][] 数组