当我阅读时:



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

显示了以下示例:

A aa;
A a = aa;  //copy constructor

vs:
A aa;
A a;
a = aa;  // assignment operator

我的问题是,为什么我们完全需要赋值运算符?我的意思是,在这种情况下,使用副本构造函数执行相同的工作将更加有效。

有人可以举一个使用赋值运算符的真实示例,而该赋值运算符不能被复制构造函数替代吗?

最佳答案

如果要在构造值后更改值,则需要分配。例如:

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

  • 这份名单几乎可以无休止地继续下去。但是在您的示例中,确实可以避免使用分配。

    关于c++ - C++赋值运算符,我们可以将其替换为copy吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61997521/

    10-11 22:38