C++赋值运算符,我们可以用copy来代替它吗?

标签 c++ operators copy-constructor assignment-operator

我读书的时候:

What's the difference between assignment operator and copy constructor?



这里:What's the difference between assignment operator and copy constructor?

显示了以下示例:
A aa;
A a = aa;  //copy constructor

对比:
A aa;
A a;
a = aa;  // assignment operator

我的问题是,为什么我们需要赋值运算符?我的意思是在这种情况下使用复制构造函数会更有效,同时它可以完成相同的工作。

有人可以举一个真实世界的例子,说明使用赋值运算符不能被复制构造函数替换吗?

最佳答案

当你想在一个值已经被构造后改变它时,你需要赋值。例如:

  • 更改已存储在 std::map 中的值
  • 更改 std::vector 中的第 n 个值
  • 在循环外更改变量的值
  • 更改作为指针或引用提供的输出参数的值
  • ...

  • 这份名单真的可以无休止地继续下去。但是在您的示例中,确实可以简单地避免使用赋值。

    关于C++赋值运算符,我们可以用copy来代替它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61997521/

    相关文章:

    java - 用于在稀疏机器学习中生成 uint64 或 uint32 特征 id 的良好哈希函数

    c++ - 编译器似乎更改了我的 const 参数

    postgresql - 在 Postgres 中使用带有时间戳值的 BETWEEN 运算符

    python - 了解 "is"运算符

    c++ - 以编程方式检查年份是否更改的最有效方法是什么

    c++ - 通用结束迭代器与容器的可递减要求 `end()`

    c++ - 为什么复制构造函数失败到 "copy"

    c++ - 为什么不需要将具有删除的拷贝构造函数的类型的移动构造函数标记为已删除?

    matlab - ||在空矩阵的情况下,运算符必须可转换为逻辑标量值

    c++ - 在私有(private)类语法中复制构造函数