范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

EffectiveC读书笔记15让operator返回this的引用

  前言:
  C++的设计者 Bjarne Stroustrup 下了很大功夫想使用户自定义类型尽可能地和固定类型的工作方式相似。这就是为什么我们可以重载运算符,写类型转换函数,控制赋值和拷贝构造函数,等等。他做了这么多努力,我们也该继续做下去。 基本数据类型的赋值操作可以象下面这样链起来int w, x, y, z; w = x = y = z = 0;所以,你也应该可以将用户自定义类型的赋值操作链起来:string w, x, y, z; // string 是由标准 C++库 "自定义"的类型 w = x = y = z = "Hello";
  因为赋值运算符的结合性天生就是由右向左,所以上面的赋值可以解析为: w = (x = (y = (z = "Hello")));
  很值得把它写成一个完全等价的函数形式。 w.operator=(x.operator=(y.operator=(z.operator=("Hello"))));
  这个格式在此很具有说明性,因为它强调了 w.operator=, x.operator=和 y.operator=的参数是前一个 operator=调用的返回值。在一个类 C中,缺省版本的 operator=函数应具有如下形式(见条款 45):C& C::operator=(const C&);
  一般情况下几乎总要遵循 operator=输入和返回的都是类对象引用的原则。例如,标准
  string 类型提供了两个不同版本的赋值运算符:string&   operator=(const string& rhs);      //  将一个 string 赋给一个 string string&   operator=(const char *rhs);        // 将一个 char* 赋给一个 string //2cyhs返回值是自身引用的目的是支持链式编程
  采用缺省形式定义的赋值运算符里,对象返回值有两个很明显的候选者:看看下面哪一个是正确的?以String 类为例:String& String::operator=(const String& rhs) {   ...   return *this;            //  返回左边的对象  } String& String::operator=(const String& rhs) {   ...   return rhs;              //  返回右边的对象  }
  首先,返回 rhs 的那个不会通过编译,因为 rhs 是一个 const String 的引用,而operator=要返回的是一个 String 的引用。但这个问题很容易解决——只用象这样重新声明operator=:String& String::operator=(String& rhs)   { ... }
  但这样的话,调用它的应用程序就不能通过编译了!为什么?x = "Hello";                     //  和 x.op=("Hello");相同
  因为赋值语句的右边参数不是正确的类型——它是一个字符数组,不是String——编译器就要产生一个临时的 String 对象(通过 Stirng 构造函数— —参见条款 M19)使得函数继续运行。就是说,编译器必须产生大致像下面这样的代码:const String temp("Hello");      //  产生临时 String x = temp;                        //  临时 String 传给 operator=
  编译器一般会产生这样的临时值,但注意临时值是一个 const 。这很重要,因为它可以防止传递到函数内的临时值被修改。否则,程序员就会很奇怪地发现,只有编译器产生的临时值可以修改,而他们在函数调用时实际传进去的参数却不行。(早期版本的 C++允许这类的临时值可以被产生,传递,修改, 结果很多程序员感到很奇怪)
  现在我们知道应用程序就不能通过编译的原因了:编译器生成的temp是const 对象,参数却是非const类型的。
  所以,结论是,这种情况下你将别无选择:当定义自己的赋值运算符时, 必须返回赋值运算符左边参数的引用,*this。

两部门支持新能源电力能建尽建能并尽并能发尽发刘丽靓中国证券报中证网中证网讯(记者刘丽靓)国家发改委2月10日消息,国家发改委国家能源局近日印发关于完善能源绿色低碳转型体制机制和政策措施的意见提出,推动构建以清洁低碳能源为主体8。java语言基础(标识符)标识符什么是标识符凡是在java语言中可以有权利自己命名的单词都是标识符它可以标识的元素有哪些?类名方法名常量名接口名变量名以上知识点要记住我们举个例子,看下面的代码publicc航天发展董秘回复5G低轨卫星以及5G高空无人机项目已形成原型样机,正在开展地面联调联试工作航天发展(000547)02月09日在投资者关系平台上答复了投资者关心的问题。投资者请问,除了航天仿真长期聚焦于军用VR技术,公司收购的锐安科技,壹进制,航天开元三家公司的产品或者为什么深圳这么发达的城市还有许多公交车上设有售票员这一职业?这个是历史遗留问题了,现在深圳有人售票车逐渐改成无人售票车了,毕竟有这么多乘务员需要安置,不可能一下子全部改成无人售票。过去深圳地铁不发达,开通长距离公交是非常必要的,比如当年的神我国首次在超冷原子分子混合气中合成三原子分子记者2月10日凌晨从中国科学技术大学获悉,该校潘建伟赵博等与中国科学院化学所白春礼小组合作,在超冷原子分子混合气中首次合成三原子分子,向基于超冷原子分子的量子模拟和超冷量子化学的研图森未来2021全年净亏损高达4。11亿美元,营收额仅为600万美元2月10日美股盘后,中国自动驾驶企业图森未来公布了2021年第四季度及全年财务报告。数据显示,公司Q4营收205万美元,上年同期为73。7万美元,同比增长178归属于普通股股东的净我国科学家在多个前沿科技领域实现关键核心技术新突破中国科学技术大学潘建伟赵博等与中国科学院化学所白春礼小组合作,在超冷原子分子混合气中首次合成三原子分子,向基于超冷原子分子的量子模拟和超冷量子化学的研究迈出重要一步。该成果2月10学自然拼读的人越来越少了,知道原因,该有后悔的了但是还是有人学,有人学说明有人教。任何新生事物都需要一个认识阶段,在资本的推助下,由于自然拼读有一定的真实性,人们还来不及判断真伪的情况下就洗脑了,被当成了英语的最好学习方法。对自芝麻信用都很好,但花呗借呗被关停,这是什么原因呢?花呗和借呗被关停无非就是三个原因!第一就是花呗套现行为,这种行为一般支付宝系统都是会检测出来的,偶尔几次倒不会有事,但是过于频繁的话,肯定是会被关停的。第二就是逾期行为,逾期不还期为何安卓比iOS更卡?原因找到了,内存占用多出近3倍提到iOS系统,估计很多人第一印象就是流畅,而提到安卓系统,估计很多人第一印象就是卡顿了,虽然近几年来安卓系统的流畅度有所好转,但相较iOS系统而言仍有着不可逾越的差距。那么,为何半画幅相机能装全画幅镜头吗?当然可以,而且效果还是不错的,但是得看你这个c画幅是哪一款了。比如尼康c画幅d500,就是一款最好的半画幅单反相机,其的处理器和模块,都是尼康旗舰机d5上的,所以这个d500价格一
餐厅如何选择购买自动洗碗机?在食堂和餐厅使用自动洗碗机可以提高洗碗的效率,降低洗碗的劳动强度。餐厅如何选择购买自动洗碗机?首先,这取决于洗碗机是如何清洗的。清洗方法与清洗效率和质量有关。在餐具的洗涤方法上,喷餐厅如何选择购买自动洗碗机?在食堂和餐馆使用自动洗碗机可以提高洗碗效率,降低洗碗的劳动强度。餐厅如何选择购买自动洗碗机?首先,这取决于洗碗机的清洁方式。清洗方法关系到清洗效率和质量。在餐具的清洗方法上,喷淋洗学校餐厅如何选择洗碗机?目前很多餐厅学校(大学幼儿园)的食堂娱乐场所的厨房等仍然是人工洗碗,而每天清洗餐具的量是几百甚至几万件。如何根据就餐人数合理选择商用洗碗机,解决招聘难人工成本高资源浪费的问题?n洗超声波清洗机的工作原理全自动超声波清洗机的原理主要是将换能器转换为功率超声波频率源的声能,并将其转换为机械振动,使槽内清洗液通过清洗壁向超声波辐射。由于超声波的辐射,槽内液体中的微气泡在声波的作用下能够餐厅洗碗机的优势在哪?随着互联网的发展,餐饮业的大多数餐具也有标准的洗涤方案。如何有效节约劳动力成本?小编向您介绍了餐厅洗碗机的优点,它有效地替代了大量的劳动力成本!接下来,小编将从五个方面向大家展示商揭盖式洗碗机的工作原理揭盖式洗碗机是普通商用洗碗机中较便宜较为简单的洗碗机。特别适用于小型餐厅酒店酒吧等洗涤量小的服务行业。揭盖式洗碗机的工作原理是,程序控制器内的开关触点按照程序设定的要求依次闭合或断ampampquot我的tempo我做主ampampquot的欧扎克针不戳品牌V计划人和企业的发展都有自己的节奏,掌控好自身的发展不可能跟别人去比节奏,不能跟别人比效果。欧扎克CMO李高杨以下是采访实录记者欧扎克出圈的原因是什么?李高杨其实所谓出圈,只是因为消费者青3还没播完,爱奇艺又开始筹备青4了?要说最近最火爆的综艺节目,毫无疑问就是抢占了100多个热搜的选秀节目创造营2021和青春有你3。爱奇艺与腾讯视频从一开始的宣发到开播时间,两档节目的明争暗斗明眼人都能看出来。而具体干货!什么是无主商标?无主商标等于闲置商标吗?什么是无主商标?无主商标是指由于企业破产解散关闭或商标人死亡,在主管机关的商标注册簿内仍然存在的注册商标。简而言之,无主商标就是没有商标持有人但仍合法的商标。无主商标有什么特征呢?吉利起诉曹操货的,获赔10。1万元日前,浙江吉利控股集团有限公司与北京搜狐互联网信息服务有限公司等侵害商标权及不正当竞争纠纷一审民事判决书于近日公布,原告为浙江吉利控股集团有限公司,被告为深圳市曹操货的科技有限公司如何注册个人肖像为商标?会被驳回吗?能够作为商标注册的标志,除了文字图形数字等,自己的肖像也可以为商标申请注册。在生活中,我们也能看到很多以肖像注册为商标的,比如老干妈肯德基王守义等都是知名度比较高的肖像商标。而且随