C++箴言:让=返回一个*this的引用

C++箴言:让=返回一个*this的引用,第1张

C++箴言:让=返回一个*this的引用,第2张

关于赋值的一个有趣的事情是你可以把它们穿成一串。

int x,y,z;

x = y = z = 15//赋值链

另一件有趣的事情是赋值是右组合的,所以,上面的赋值字符串可以这样解析:

x =(y =(z = 15));

这里把15赋给Z,然后把这个赋值的结果(最新的Z)赋给Y,再把这个赋值的结果(最新的Y)赋给x。

这里的方法是让赋值操作符返回对left参数的引用,这是在为类实现赋值操作符时应该遵循的约定:

类小部件{

公共:

...

Widget & operator =(const Widget & RHS)//返回类型是对

{ //当前类

...

返回* this//返回左边的对象

}

...

};
这个约定适用于所有的赋值操作符,而不仅仅是上面的标准形式。因此:

类小部件{

公共:

...

Widget & operator+=(const Widget & RHS)//该约定适用于

{ // +=,-=,*=,等等。

...

返回* this

}

Widget& operator=(int rhs) //即使

{ //运算符的参数类型

...//是非传统的

返回* this

}

...

};

这只是一个约定,代码不会按照这个意图来编译。在任何情况下,标准库中(或即将进入标准库)的所有内置类型和类型都遵守这个约定(例如string、vector、complex、tr1::shared_ptr等)。).除非你有一个好的理由去做一些不同的事情,否则不要毁了它。

要记住的事情

让赋值操作符返回对*this的引用。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++箴言:让=返回一个*this的引用

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情