令operator=返回一个reference to *this——条款10

Android仿百度谷歌自动提示——AutoCompleteTextView NULL 博文链接:https://sraining.iteye.com/blog/726710 立即下载

        关于赋值,有趣的是你可以把它们写成连锁形式:

        int x, y, z;

        x = y = z = 15;

        同样有趣的是,赋值采用右结合律,所以上述连锁赋值被解析为:

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

        这里15先被赋值给z,然后其结果(更新后的z)再被赋值给y,然后其结果(更新后的y)再被赋值给x。

        为了实现“连锁赋值”,赋值操作符必须返回一个reference指向操作符的左侧实参。这是你为classes实现赋值操作符时应该遵循的协议:

class Widget {
	public:
	...
	Widget& operator=(const Widget& rhs) {
		...
		return *this;
	}
	...
};

这个协议不仅适用于以上的标准赋值形式,也适用于所有赋值相关运算,例如:

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

       注意,这只是个协议,并无强制性。如果不遵循它,代码一样可通过编译。然而这份协议被所有内置类型和标准程序库提供的类型如string,vector,complex,tr1::shared_ptr或即将提供的类型(见条款54)共同遵守。因此除非你有一个标新立异的好理由,不然还是随众吧。

请记住:

令赋值操作符返回一个reference to *this;

操作系统课程项目 OS project —— Pintos from Project 1 to Project 3 Pintos Project 陪伴我们操作系统课程大半个学期了…… 虽然做了这么长时间,个人能力有限,pintos代码,看过的可能也就看懂了一半吧,更不用说没看过的了…… 但是也找到了一些有价值的资料,整理一下,供后辈们参考…… 关于环境的问题,最好是用ubuntu 16.04 windows用户不要折腾装双系统了,特别是win10,动不动更新一下,说不定双系统就出问题了,linux... 阅读详情

相关推荐

Unity 2021 LTS安装避坑指南:从下载到第一个3D项目的完整流程

本文提供了一份详尽的Unity 2021 LTS安装与首个3D项目创建指南。内容涵盖从Unity Hub下载、版本选择、模块安装避坑,到编辑器界面解析、创建旋转立方体脚本的完整流程,旨在帮助初学者快速搭建稳定开发环境并上手核心操作。

mango的博客 308

Effective C++ 条款10:令operator=返回一个 reference to *this

这一篇博客记录我学习Effective C++ term10的学习笔记! Effective C++ term10 教会我: 在类中重载赋值运算符(比如operator=)时,应该令operator=返回一个reference to *this 的形式。 (即在重载这些赋值运算符时,返回值要用reference to *this的形式返回,也即用类名&做返回值) 下面就是标准的代码规范: #include<iostream> using std::cout; ...

weixin_44980842的博客 233

yanshee 机器人全流程指南

2.点击yanshee app右上角根据提示操作 3.当手机显示成功连接 ,按下机器人胸前按钮说出“ip地址”4.根据机器人播报的ip地址加上:8888使用浏览器访问,你就会看到 jupyterd的界面,里面可以新建文件也可以改他存在的文件。我们使了yanshee机器人,这个是面向K12、中高职、高校学生推出的开源人形机器人教育平台,应用于课程教学、竞赛、科研活动等场景。我们接下来可以根据这些apl做许多好玩的,比如控制他运动,跳舞唱歌,it`s easy。注意电脑,手机,机器人必须连同一个网。

qq_44827929的博客 7610

Effective C++条款10:令operator=返回一个reference to *this(Have assignment operators return a reference to *

Effective C++条款10:令operator=返回一个reference to *this(Have assignment operators return a reference to *this)

CltCj的博客 302

自动驾驶控制算法——MPC控制算法

自动驾驶MPC控制算法摘要 模型预测控制(MPC)是一种基于系统预测模型的先进控制算法,通过滚动优化方式求解最优控制输入。其核心流程包括:1)使用数学模型预测未来系统状态;2)定义优化目标函数衡量预测误差;3)求解满足约束的最优控制序列;4)仅执行第一步控制并重复该过程。 相比传统PID控制,MPC具有预测未来、多步优化、显式处理约束等优势,特别适合自动驾驶中对安全性要求高的场景,如轨迹跟踪、车道保持、联合纵横向控制、自动泊车和动态避障等。MPC通过状态空间模型预测系统行为,在每个控制周期计算未来N步的控制

swaggytiger的博客 7919

电机控制实战:SVPWM五段式与七段式算法在STM32上的实现对比

本文深入对比了SVPWM五段式与七段式算法在STM32上的实现效果,详细分析了两种算法在占空比控制、开关损耗和波形质量等方面的差异。通过实测数据,为工程师提供了针对不同应用场景的选型建议,包括电池供电设备和高精度伺服控制系统的优化方案。

h6i7j8的博客 584

C++ operator= 注意事项

下面先看一段代码: #include using namespace std; class Point{ public: Point(float x=0.0,float y=0.0):_x(x),_y(y){} Point& operator=(const Point& rhs); void printData(){ cout<<"_x="<<_x<<endl; cout<<"

辉 3582

M×N扫描序列图像拼接、大视场图像拼接、全景图像拼接、2D网格拼图方法、累计误差消除(显微图像/航拍图像等)

M×N序列图像完整拼接方法前言一、最朴实的一般方法二、广度优先搜索算法1.引入库2.读入数据整体路径优化算法 前言 1、网上有很多介绍图像两两拼接的算法,但是缺少对M×N张子图两两相对位置关系获得整体误差较小,肉眼下无明显错位的完整图像的算法实现。 2、由于拼接算法的不稳定可能会产生不同程度的误差,那么如何需要选择(搜索)误差较小拼接路径。 一、最朴实的一般方法 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、广度优先搜索算法 1.引入库 代码如下(示

qq_37764141的博客 5403

c++ 中 operator 使用小结

1、operator作类的转换函数 类可以使用构造函数将其他类型转化为此类的对象,比如 my_class a = my_class(int i); 1 将int型转化为my_class类的一个对象。 同样,也可以使用类的转换函数将类的对象转化为其他的类型。 类的转换函数应当满足以下的几个条件: 转换函数必须是类方法 转换函数不能指定返回类型 转换函数不能有参数 下面是一个类转化函数的例子 #include <iostream> using namespace std; class

转载和创作优秀的博客 4698

135、高通 ChromaTix 调优工具入门:参数含义、调优流程与效果对比

本文介绍了高通ChromaTix色彩调优工具的核心使用要点:1. ChromaTix是位于ISP管线中的色彩处理系统,核心任务是将原始色彩映射为符合人眼感知的"舒适"效果;2. 重点解析了饱和度、色调、亮度相关饱和度等关键参数的实际含义和调试陷阱;3. 分享了四步调优流程,强调需要基于多场景数据验证;4. 通过案例展示了参数调整带来的色彩改善效果;5. 总结了实用建议,包括保持单一变量调试、量化评估色差、关注极端场景表现等。文章指出ChromaTix调优是平衡不同场景需求的"妥协艺术",需要结合客观数据和主

sundong_81的博客 106

SAP S/4HANA 中 RAP 业务对象接口的消费模式

本文探讨了SAP S/4HANA中RAP业务对象接口的消费模式,重点介绍了通过EML直接调用和CDS投影两种Clean Core开发路径。文章分析了BO Interface作为稳定契约的价值,并提供了BAdI集成、OData服务发布等实际场景案例,同时对比了OData V2/V4的技术选型考量,最后强调了ADT向导使用中的DCL权限注意事项。全文旨在帮助开发者构建升级友好的业务对象消费方案。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 757

C++知识点43——解引用运算符和箭头运算符的重载及智能指针类的实现

一、概念、 在自定义行为类似指针的类时,需要重载*和->。C++中的智能指针就重载了这两个运算符。->必须是成员函数,*也应该是成员函数。与内置类型保持一致,这两个函数通常都是const的。以为*和->通常不会也不应该改变对象的状态 *运算符的返回值无硬性规则,但是通常都是一个类型的引用 ->运算符的返回值必须是一个类的指针(或者重载了operator->的类的对象)。因为->的作用就是通过对象的指针获取对象的成员 二、示例 通过实现一个智能指针来熟悉这两.

Master Cui的博客 1500

手把手教你 Ubuntu 24.04 离线安装 Ollama

本文介绍 Ubuntu 下离线安装 Ollama 并使用 Ollama 部署 llama3.1-70b 大模型

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 1018

条款10:令operator=返回一个reference to *this

关于赋值,你可以把它们写成连锁形式: int x,y,z; x = y = z = 15; //赋值连锁形式 因为赋值采用右结合律,所以上述赋值被解析为: x = (y = (z = 15)); 为了实现“连锁赋值”,赋值操作符必须返回一个reference指向操作符左侧的实参。 class Widget { public: ...

IT呵呵哒的博客 351

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

条款10 令operator=返回一个reference to *this

总结: 重载赋值运算符(包括所有赋值相关的运算)、前自增和前自减运算符(++a、--a)都返回*this的引用。而后自增和后自减(a++、a--)返回的是对象。关于自增、自减运算符的重载见文本末尾部分。      关于赋值的一件有意思的事情是你可以把它写成连锁形式。 int x, y, z; x = y = z = 15; // 赋值连锁形式,相当于x = (y = (z = 15

Sunshine的专栏 1784

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Effective C++ 条款10解读: 令operator= 返回一个reference to *this

我们先来看一个简单测程序: #include using namespace std; class A { private: int x; public: A() { } A(int xx) { x = xx; } int get() const { return x; } void operator=(const A &a) { x = a.x;

认知 行动 坚持 7451

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

条款10:令operator= 返回一个reference to *this

 以前没有太注意在重载类的赋值操作时,为什么总是返回一个类类型的引用。下面我们来看看这是为什么:class CExample{public: CExample (const string &str, int v) : m_str(str), m_val(v) { } void operator=(const CExample &rhs); CExample& operator+=(const

顺子的专栏 542

条款10:令operator= 返回一个reference to *this

条款10:令operator= 返回一个reference to *this    (Have assignment operators return a reference to *this)内容:    令赋值操作符返回一个自身对象的引用,究其根本原因就是为了实现"连锁赋值",比如,你可以这样写:    int x,y,z;    x=y=z=15;    类似的假如你要使你写的类能实现"

scofieldzhu的专栏 789

条款10:令operator=返回一个reference to* this

令赋值操作符返回一个reference to* this。 不遵循该协议,代码也可通过编译,但是除非有更好的理由,还是应该遵守,因为所有内置类型和STL都遵守该协议。 class Widget{ public: .. //标准赋值形式,实现“连锁赋值” Widget&amp; operator=(const Widget&amp; rhs) { ... return* this; ...

lzhtcsw2016的博客 225

[Effective C++]条款10:令operator= 返回一个reference to *this

* 4、this 与 *this **

Tim_10的博客 472

Effective C++ 条款10:令operator=返回一个reference to *this

Effective_C++_10

君鼎的博客 439

Effective C++ 条款10:令 operator= 返回一个 reference to *this

深入解析 Effective C++ 条款10:为什么赋值运算符应该返回 reference to *this,以及连锁赋值的实现原理和最佳实践。

凡人叶枫的博客 207

条款10:令operator=返回一个reference to * this

考虑下面代码:

u013258319的专栏 657

条款 10 :令operator=返回一个reference to *this

条款10 :令operator=返回一个reference to *this **Have assignment operator return a reference to *this. ** 为了实现类似连等的赋值形式,赋值操作符必须返回一个reference指向操作符的左侧。 //关于赋值你可以写成连续的形式 int x,y,z; x=y=z=10; //上述语句采用右结合律,也就是说10先被赋值给z,更新z的值 //然后将z的值赋值给y,更新y的值 //最后将y的值赋值给x,更新x的值。 /

weixin_45730130的博客 217
上一篇: 绝不在构造函数和析构函数中调用virtual函数——条款09
下一篇: 在operator=中处理“自我赋值”——条款11
OODeveloper
博客等级 码龄12年 43粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值