读书笔记:Effective C++ 2.0 版,条款15、16、17(operator=返回*this、全赋值、检查this)

编程入门 行业动态 更新时间:2024-10-09 06:31:05

读书笔记:Effective C++ 2.0 版,条款15、16、17(operator=返回*this、全<a href=https://www.elefans.com/category/jswz/34/1769111.html style=赋值、检查this)"/>

读书笔记:Effective C++ 2.0 版,条款15、16、17(operator=返回*this、全赋值、检查this)

条款15: 让operator=返回*this的引用
c++的设计者bjarne stroustrup想使用户自定义类型尽可能地和固定类型的工作方式相似。所以有重载运算符,类型转换函数、拷贝赋值、拷贝构造函数等。
类c中,缺省版本的operator=函数具有如下形式:

c& c::operator=(const c&);

注意返回值没有const修饰,虽然可以加,但与缺省形式不一致,并不推荐。

string&	operator=(const char *rhs);  
这个是为了兼容char*,避免多余的隐式转换,成本变大

条款16: 在operator=中对所有数据成员赋值
这条需要注意派生类赋值时,也带上基类赋值。

class derived: public base {
public:derived(const derived& rhs): base(rhs), y(rhs.y) {}
};

条款17: 在operator=中检查给自己赋值的情况

c& c::operator=(const c& rhs){// 检查对自己赋值的情况if (*this == rhs)// 假设operator=存在return *this;...
}
也可以考虑用uuid标识唯一对象。

这几个条款都是范式,按照std标准形式即可。

更多推荐

读书笔记:Effective C++ 2.0 版,条款15、16、17(operator=返回*this、全赋值、检查this)

本文发布于:2023-12-06 11:00:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1667387.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:赋值   读书笔记   条款   Effective   operator

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!