让operator=返回*this的引用


要完成如 a = b =c 这样的操作所以返回值不能为void,对这个表达式,编译器的理解为 a = (b = c),所以operator=可以返回左值或者右值,但有时候我们也需要这样的操作 (a = b) = c ,b赋值给a,然后c赋值给a。所以operator=应该返回右值。、

由此分析,我们得到operator=的函数声明为 T & T::operator=(const T &)。

假设我们传入的参数为a,则a为const T & 类型,与返回类型不符,所以不能作为返回值。

如果我们去掉参数的const,首先,这样不安全,函数内部可能改变传入的参数,其次对于一些字符串字面量,其实质仍为const。

所以我们只能返回*this的引用。

相关文章:

  • 2021-09-06
  • 2022-02-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-05-26
  • 2021-08-14
  • 2021-07-24
  • 2021-06-29
  • 2021-11-06
  • 2021-11-13
  • 2021-08-26
相关资源
相似解决方案