一个正常的assignment操作符的声明是这样的。

const elmentType & elmentType::operator=(const elmentType &rhs)

这两个const应该作何理解呢?后面的const很好理解,作为引用对象,要防止对原有对象进行破坏。

那么后面一个呢?

事实上,对于一个assignment操作来说,

比如 

a = b;

来说,a所取得的并不是调用operator=的返回值,而是通过成员函数调用operator=直接对a操作实现的。

那么这个返回值的意义是什么?

事实上这个返回值是为下面这种情况准备的。

a = b =  c = d;

在这种情况下,赋值操作符向右结合,实际的操作是

a = (b = (c = d))

operator=的返回值是为了在连续赋值时充当左值使用,这样的话,自然要防止自己的值被更改,因为需要声明const加以保护。

 

以上是个人理解,如果有问题,欢迎指正。

相关文章:

  • 2021-10-09
  • 2022-03-03
  • 2022-12-23
  • 2021-08-16
  • 2022-02-05
  • 2022-01-28
  • 2021-04-02
  • 2022-01-14
猜你喜欢
  • 2022-12-23
  • 2021-05-22
  • 2022-12-23
  • 2021-06-30
  • 2022-12-23
  • 2022-02-07
  • 2021-08-22
相关资源
相似解决方案