【More Effective C++】条款22:采用op+=取代op+优势

采用operator+=实现operator+优点:

  • 降低维护成本,只需要维护operator+=即可;
  • 如果operator+=为publicoperator+不需要称为class的友元;
  • 通过模板的方式自动实现operator+版本;
  • 提供两种操作方式,operator+=效率高,operator+易于撰写和维护;
  • operator+=比operator+效率高,可以通过返回值优化避免临时对象的构造和析构成本;

class Rational {
public:Rational(int numerator = 0, int denominator = 1) : _numerator(numerator), _denominator(denominator) {}double asDouble() const {return double(_numerator)/_denominator;}int numerator() const { return _numerator; }int denominator() const { return _denominator; }Rational& operator+=(const Rational& rhs) {_numerator += rhs.numerator();_denominator += rhs.denominator();return *this;}private:int _numerator;int _denominator;
};// const Rational operator+(const Rational& lhs, const Rational& rhs) {
//     return Rational(lhs) += rhs;
// }
template <typename T>
const T operator+(const T& lhs, const T& rhs) {return T(lhs) += rhs;
}int main() {Rational a, b, c, result;result = a + b + c;result = a;result += b;result += c;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/697638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络-局域网

文章目录 局域网局域网拓扑结构以太网以太网传输介质以太网时隙提高传统以太网带宽的途径以太网帧格式 局域网协议IEEE 802参考模型IEEE802.2协议LLC帧格式及其控制字段LLC提供的三种服务 IEEE 802.3协议IEEE 802.4协议IEEE 802.5协议 高速局域网100M以太网千兆以太网万兆以太网…

冲突管理最佳实践

任何团队都无法避免冲突&#xff0c;如何有效管理冲突&#xff0c;将冲突转化为团队成长和凝聚的动力&#xff0c;是任何一个团队管理者的必修课。原文: Best Practices for Managing Conflict in Engineering Management Obie Fernandez Unsplash 冲突在任何组织中都不可避免&…

计算机网络中的与或非运算

三种基本逻辑运算关系 搭建中小公司网络&#xff0c;根据网址计算&#xff0c;用户的人数 需要ip和掩码&#xff0c;确定可分配的ip数 与运算电路为串联电路&#xff0c;的&#xff0c;A,B的组合情况 具体参考三种基本逻辑运算关系

图片参考网站

摄图网-正版高清图片免费下载_商用设计素材图库 (699pic.com) AIGC数字艺术素材图片-数字艺术-数字艺术图片-摄图网 (699pic.com) 花瓣网 - 陪你做生活的设计师&#xff08;创意灵感天堂&#xff0c;搜索、发现设计灵感、设计素材&#xff09; (huaban.com) 千图网-免费在线…

python视频流处理工具

在当今数字化的时代&#xff0c;视频处理应用变得越来越普遍。无论是视频流分析、实时视频处理还是视频流转码&#xff0c;都需要强大的工具来实现。Python Vidgear 库就是这样一个工具&#xff0c;它为开发人员提供了丰富的功能&#xff0c;用于处理实时视频流。本文将深入探讨…

Android中Transition过渡动画的简单使用

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 一、布局xml文件代码如下&#xff1a; <?xml version"1.0" encoding&quo…

Feign接口GET方式注意事项

1. GET请求方式&#xff0c;对于feign接口一定得用 RequestParam/SpringQueryMap等注解声明是路径参数&#xff0c;否则会自动识别为body params报错(controller接口则可不用&#xff0c;springmvc会自动匹配相同字段名) demo: API 层controller接口&#xff1a; 前端传参可直…

ABB触摸屏维修工控机显示屏维修CP405 A1/A0

ABB人机界面维修常见故障&#xff1a;黑屏白屏花屏&#xff0c;按触摸屏无反应或反应慢触摸不好&#xff0c;内容错乱&#xff0c;进不了系统界面&#xff0c;无背光背光暗&#xff0c;有背光无字符&#xff0c;不能通信&#xff0c;按键无无反应等均可维修。 此维修检测方法有…

geoserver 热力图样式

<?xml version"1.0" encoding"ISO-8859-1"?> <StyledLayerDescriptor version"1.0.0" xsi:schemaLocation"http://www.opengis.net/sld StyledLayerDescriptor.xsd" xmlns&…

英文输入法(C 语言)

题目 主管期望你来实现英文输入法单词联想功能&#xff0c;需求如下&#xff1a; 依据用户输入的单词前缀&#xff0c;从已输入的英文语句中联想出用户想输入的单词。按字典序输出联想到的单词序列&#xff0c;如果联想不到&#xff0c;请输出用户输入的单词前缀。 注意 英…

Java设计模式 | 七大原则之单一职责原则

一、单一职责原则 基本介绍 对类来说&#xff0c;一个类应该只负责一项原则&#xff0c;如类A负责两个不同职责&#xff1a;职责1&#xff0c;职责2。当职责1需求变更而改变A时&#xff0c;可能造成职责2执行错误&#xff0c;所以需要将类A的粒度分解为A1&#xff0c;A2。 注…

常见算法解法——链表篇

链表 链表中每一个节点为一个对象&#xff0c;对象中包含两个成员变量&#xff0c;第一个是val&#xff0c;代表链表的值&#xff0c;第二个是next&#xff0c;它指向下一个节点&#xff0c;是下一个节点对象的引用。 定义链表 class ListNode:def __init__(self, x):self.v…

玩主机游戏能省去不少烦恼?+主机该购买哪台?

文/嘉兰SK 来到次世代&#xff0c;玩家们最关心的问题逐渐变成了购买的游戏能否支持升级。 各个游戏厂商也没有闲着。 此前还有标准版、黄金版、终极版、决定版等一系列。 想出很多招数。 于是很多新玩家开始疑惑&#xff1a;你们都说玩主机游戏可以省去很多麻烦&#xff0c;可…

每天一个知识点 - 如何快速熟悉后端项目

入职一家新公司的时候&#xff0c;不可避免的就是接触到新公司的项目&#xff0c;有些项目一启动就是好几年&#xff0c;业务功能极其复杂&#xff0c;下面我总结几个方法让大家快速熟悉后端项目&#xff08;图文结合&#xff09; 用例图简析 用例是系统中的一个功能单元&…

【机器学习】机器学习是什么?

机器学习是一种人工智能领域的技术&#xff0c;旨在使机器能够通过数据和经验来自动学习和改进。它通过构建和训练模型&#xff0c;使机器能够从输入数据中提取规律和模式&#xff0c;并根据这些规律和模式做出预测或者决策。 机器学习的核心思想是让机器通过大量的数据进行学…

springboot网站开发02-接入持久层框架mybatisPlus

springboot网站开发02-接入持久层框架mybatisPlus&#xff01;经过上一小节内容分享&#xff0c;我们的项目嵌套模式框架搭建好了&#xff0c;下面就是开始编辑具体的业务代码了&#xff0c;我们使用到了持久层框架是mybatisPlus插件。下面是一些具体的植入框架的操作步骤。 第…

Python 光速入门课程

首先说一下&#xff0c;为啥小编在即PHP和Golang之后&#xff0c;为啥又要整Python&#xff0c;那是因为小编最近又拿起了 " 阿里天池 " 的东西&#xff0c;所以小编又不得不捡起来大概五年前学习的Python&#xff0c;本篇文章主要讲的是最基础版本&#xff0c;所以比…

DT DAY3 信号和槽

作业&#xff1a; 1> 思维导图 2> 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 btn3 new QPushButton("按钮3",this);btn3->resize(ui->btn2->width(),ui->b…

研发流程图

1、需求评审流程 2、用例评审流程 3、代码评审流程 4、产品功能上线流程

排序算法整理

排序种类排序特性代码背景 基于插入的排序直接插入排序原理代码 折半查找排序2路查找排序希尔排序(shell) 缩小增量排序原理代码 基于交换的排序冒泡排序原理代码 快速排序&#xff08;重要!&#xff09;原理我的思考 代码 基于选择的排序&#xff08;简单&#xff09;选择排序…