Effective_C++:15、令operator=传回“*this的reference”

15、令operator=传回“*this的reference”

1、const变量、const指针、const引用

        const变量是指变量的值不能改变,const指针是指使用该指针不能改变他指向的对象的值,const引用是指使用该引用不能改变与他绑定的对象的值。

        const指针可以指向const变量与非const变量,但非const指针只能指向非const变量。

        const引用可以与const变量或非const变量绑定,但非const引用只能与非const变量绑定。

2、令operator=传回“*this的reference”

        我们期望能自定义一些型别,并且这些型别与内建型别相仿,所以我们可以将运算符重载。如int型支持赋值操作符串联在一块,也支持隐式类型转换。
        若我们要定义自定义类型的operator=(),令他接受一个const引用的参数是一个不错的选择,函数不能改变入参的值,且接受const变量与非const变量;而令他传回一个引用,则使得他像int型一样实现赋值操作符的串联,即便入参进行了隐式类型转换(进行隐式类型转换,产生一个临时的const对象,而函数的入参正是这个临时对象)。这里,不传回const引用的原因是内建型别并没有那么做,他们允许返回值作为左值(尽管那样没什么意义)。此时,函数中有两个引用,*this引用与入参的const引用,故只能传回*this的引用。

        总之,令operator=传回“*this的reference”,否则可能会妨碍到赋值操作符的串联使用,也可能妨碍到调用端的隐式类型转换。


猜你喜欢

转载自blog.csdn.net/l1dian11/article/details/81051657
今日推荐