《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)
上一篇 2022年1月17日 下午2:00
下一篇 2022年1月17日 下午2:00


相关推荐

  • 扣子 Skill 全流程实测:创建、上架、付费、使用一次讲清

    扣子 Skill 全流程实测:创建、上架、付费、使用一次讲清

    2026年3月12日
    2
  • SMTP服务器未设置_smtp服务器怎么填

    SMTP服务器未设置_smtp服务器怎么填什么是smtp服务器呢?smtp服务器是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。不过很多用户都不知道怎么去打开这个smtp服务器,针对这个问题,接下来小编给大家做详细介绍。解决方法如下:1、打开IIS开始菜单-运行或者winr快捷键,然后在运行中输入inetmgr按回车;2、如果出现错误提示说明IIS没有安装或者是服务没有启用;3、在ISS中连接栏中选中…

    2026年4月15日
    6
  • WEditor使用教程

    WEditor使用教程一 WEditor 简介在执行 APPUI 自动化测试时 需要使用到元素定位 通常我们会直接使用 appiumDeskto 的 Inspector 介绍另一款 UI 元素定位的工具 WEditor WEditor 能够提供辅助编写脚本 定位元素 调试代码等功能 是基于 python 的一个查看 APP 元素的工具 二 WEditor 安装 1 环境准备 已安装 python3 6 以上 如果运行 iOS 需要使用 tidevice 参考文章 https blog csdn net dou being article

    2026年3月19日
    2
  • leetcode题不会做怎么办_伪装学渣题目答案

    leetcode题不会做怎么办_伪装学渣题目答案在工程效率大行其道的今天,如果不会写点代码以后也不容易在测试圈混下去。今天给大家推荐一个LeetCode的刷题利器,可以伪装到连你老板在这里走过去都无法确认你是在干活呢,还是在干活呢。LeetCod

    2022年8月1日
    9
  • 哪些信息是日志中不能保存_怎么查看日志信息

    哪些信息是日志中不能保存_怎么查看日志信息日志信息每个用例都会生成一个对应的log日志,位置:<ProjectRootDir>/logs/TestCaseID.run.log.如果你想看到request和response、提取

    2022年7月31日
    8
  • 软件被拦截了不能使用如何解决_libwebsockets使用

    软件被拦截了不能使用如何解决_libwebsockets使用废话不多说直接上代码:不清楚的加群:群:191065815privatevoidForm1_Load(objectsender,EventArgse){try{//更改设置浏览器语言CefSettingssettings=new…

    2026年1月24日
    5

发表回复

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

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