《Effective C++ 》学习笔记——规定10「建议收藏」

《Effective C++ 》学习笔记——规定10

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************



二、Constructors,Destructors and Assignment Operators


Rule 10:Have assignment operators return a reference to *this

规则10:令operator= 返回一个 reference to *this


关于赋值,有一个非常有趣的连锁代码:

int x,y,z;
x = y = z = 15;    // 赋值的连锁形式


并且,
C++採用右结合律
,假设用括号来代表优先计算顺序。就是这种:

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

C++中,为了实现“连锁赋值”,赋值操作符必须返回一个reference指向操作符的左側实參。

(注意。这是classes 实现赋值操作符时应该遵循的协议

<span style="font-size:14px;">class Widget  {
public:
    ...
    Widget& operator=( const Widget& rhs )<span style="white-space: pre;">		</span>// 返回类型是个reference
    {
        ...
        return* this;<span style="white-space: pre;">					</span>// 返回左側对象
    }
    ...
};</span>


并且这个协议不仅适用于以上的标准赋值形式,也适用于全部赋值相关的运算。比方+=、-=、*= 等:

Widget& operator+=( const Widget& rhs )
{
    ...
    return *this;
}


可是,
要注意这仅仅是一个协定。并无强制性,假设不遵循它,代码一样能够通过编译

然而这份协议被全部内置类型和标准程序库提供的类型,如 string、vector、complex,trl::shared_ptr 等共同遵守。

所以除非有足够的理由去另类一下,不然还是从众吧。


☆请记住

令 assignment(赋值) 操作符返回一个 reference to *this。




***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116694.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 从网页抓取数据的一般方法

    首先要了解对方网页的运行机制 ,这可以用httpwacth或者httplook来看一下http发送和接收的数据。这两个工具应该说是比较简单易懂的。这里就不再介绍了。主要关注的内容是heade

    2021年12月27日
    39
  • Zigbee协议栈ZStack构架

    Zigbee协议栈ZStack构架协议栈版本信息:ZigBee2006\ZStack-1.4.3-1.2.11、ZStack协议栈构架  Zigbee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一些应用层API,供用户调用。协议栈体系分层架构与协议栈代码文件夹对应表如下:   整个协议栈的构架,如图所示APP:应用层目录,这是用户创建各种不同工程的区域,在这个目录

    2022年5月8日
    54
  • 此工作站和主域间的信任关系失败 又一解决办法_电脑加域后无管理员

    此工作站和主域间的信任关系失败 又一解决办法_电脑加域后无管理员某虚拟化的域控制器出现严重故障以至于不可修复,故使用之前Hyper-V中导出的备份恢复了域控制器。恢复后基本功能正常,但部分工作站登录时提示“此工作站和主域间的信任关系失败”。【解决方案】0、必须确保故障工作站没有其他的问题(如网络连接故障、DNS设置错误等);1、在不能登录域的工作站上,使用工作站本地的管理员用户登录系统;2、在工作站上打开powershell,输入Reset…

    2022年10月19日
    1
  • android开机动画包制作工具实现「建议收藏」

    android开机动画包制作工具实现「建议收藏」android开机动画包制作  由于项目的需要,要制作LOGO有光亮的闪烁,网上查了资料,都是介绍 desc.txt文件的格式,但对于每一帧的图片制作没有现成的工具,所以本人试着自己先一个,只要满足自己的需求(logo光来回扫动)就行,其他复杂的情况不考虑。  首先是 desc.txt的实现:  102460016  p00part0  很简单,分辨率,播

    2022年5月14日
    44
  • One Piece1-541(ed2k)[通俗易懂]

    One Piece1-541(ed2k)[通俗易懂]1-143http://www.VeryCD.com/topics/143292/144-228http://www.VeryCD.com/topics/17082/229-325http://www.VeryCD.com/topics/39594/326-384http://www.VeryCD.com/topics/198051/385-458ht

    2022年10月19日
    0
  • java的动态代理机制详解_java为什么是静态语言

    java的动态代理机制详解_java为什么是静态语言说起java动态代理,在我刚开始学java时对这项技术也是十分困惑,明明可以直接调通的对象方法为什么还要使用动态代理?随着学习的不断深入和工作经验的积累,慢慢的体会并理解了java动态代理机制。昨天再给公司新同事做技术培训时有同学就对动态代理产生了疑问,我这里梳理一遍一并记录一下,方便大家查看对自己也是加深记忆。(1)什么是代理?大道理上讲代理是一种软件设计模式,目的地希望能做到代码重用。具体上讲…

    2022年10月9日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号