- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
比较运算符重载
什么是运算符重载?运算符重载允许你为自定义数据类型定义现有运算符的含义。例如,可以为自定义的复数类型定义+运算符,使其能够进行复数加法运算。目的
为什么需要重载比较运算符?1对自定义类型进行比较,例如判断两个复数是否相等、大小比较。2在容器中对自定义类型进行排序、查找或过滤。
C++中的运算符重载概念通过编写特定的函数来定义自定义类型上运算符的行为。语法使用关键字operator后接运算符符号来定义重载函数。示例例如,定义一个名为MyClass的类的+运算符重载函数:MyClassoperator+(constMyClassother);
哪些运算符可以重载?可重载运算符大多数运算符都可以重载,包括算术运算符、关系运算符、位运算符、赋值运算符等。不可重载运算符少数运算符是不可重载的,例如`::`(作用域解析符)、`.*`(成员指针访问)和`sizeof`(大小运算符)。
比较运算符:==,!=,,,=,=判断两个对象是否相等判断两个对象是否不相等判断第一个对象是否大于第二个对象判断第一个对象是否小于第二个对象判断第一个对象是否大于等于第二个对象判断第一个对象是否小于等于第二个对象
比较运算符重载的语法返回类型通常为`bool`类型,表示比较结果为真或假1函数名使用`operator`关键字后接运算符符号2参数通常为`const`引用,避免不必要的对象拷贝3
返回值类型:bool返回值类型比较运算符重载函数的返回值类型通常为`bool`,表示比较结果为真或假。示例booloperator==(constMyClassother)const;
booloperator!=(constMyClassother)const;
参数类型:const引用1引用参数使用引用类型作为参数,避免不必要的对象拷贝,提高效率。2const修饰使用`const`修饰参数,防止参数在函数内部被修改。
const关键字的使用const关键字用于声明常量,确保数据不会被意外修改。提高代码安全性。应用场景用于函数参数、函数返回值、成员变量的声明,以及防止对象被修改。示例在比较运算符重载函数中使用`const`引用参数,以确保参数不会被修改。
成员函数重载成员函数重载将重载函数定义为类的成员函数,第一个参数隐式地表示当前对象。示例classMyClass{
public:
booloperator==(constMyClassother)const;
};
优势可以访问类的私有成员,方便比较操作。
友元函数重载友元函数重载将重载函数定义为类的友元函数,可以访问类的私有成员。1示例classMyClass{
friendbooloperator==(constMyClasslhs,constMyClassrhs);
};
2优势可以进行对称性比较,例如`a==b`和`b==a`。3
成员函数vs友元函数1成员函数访问私有成员方便,但只能进行非对称性比较。2友元函数可以进行对称性比较,但需要声明为友元函数。
何时使用成员函数?1非对称性比较如果比较操作只需要访问当前对象的数据成员,可以使用成员函数。2示例判断一个复数是否为零,只需要访问复数的实部和虚部。
何时使用友元函数?对称性比较如果比较操作需要访问两个对象的数据成员,可以使用友元函数。示例判断两个复数是否相等,需要访问两个复数的实部和虚部。
==运算符重载示例
!=运算符重载示例使用`!`运算符通过`!`运算符反转`==`运算符的结果。
运算符重载示例
运算符重载示例1成员函数2友元函数3自定义规则
=运算符重载示例比较操作判断第一个对象是否大于等于第二个对象。代码示例booloperator=(constMyClassother)const{
return(*thisother)||(*this==other);
}
=运算符重载示例类似于`=`运算符,可以调用``和`==`运算符进行比较。需要注意的是,如果``和`==`运算符已经重载,则`=`运算符的重载实现应该与它们保持一致。
运算符重载的注意事项保持运算符语义的一致性避免过度重载运算符重载与多态
保持运算符语义的一致性1一致性重载的运算符应该保持与内置类型相同或相似的语义,避免造成误解。2示例对于`+`运算符,应该保持其加法的语义,而不是用于其他操作。
避免过度重载过度重载不要过度重载运算符,避免代码变得难以理解和维护。原则只重载那些与自定义类型有明显关联的运算符。
运算符重载与多态多态性允许不同类型的对象通过相
您可能关注的文档
- 《正多边形与圆的关系》课件.ppt
- 《正多边形的绘制方法》课件.ppt
- 《正常与异常变化》课件.ppt
- 《正数与负数》课件 .ppt
- 《正数和负数》课件.ppt
- 《正激变换器的设计与实现》课件.ppt
- 《正统的破窗效应》课件 .ppt
- 《正视血糖管理误区:糖尿病认知提升之路》课件.ppt
- 《正误判断参考资料》课件.ppt
- 《正负数的认知与应用》课件.ppt
- 市人大办副主任2024带头增强党性、严守纪律、砥砺作风等四个方面存在的问题及整改措施对照发言材料4篇(四个带头+典型案例剖析).docx
- 深入贯彻中央八项规定精神学习教育专题辅导授课讲稿.docx
- 深化零基预算改革面临的问题困难及对策建议及深化市级零基预算改革方案.docx
- 某邮政公司2024年度基层党建工作整改报告材料.docx
- 某党政办主任2024带头增强党性、严守纪律、砥砺作风等四个方面存在的问题及整改措施个人对照检查发言提纲范文(四个带头).docx
- 廉政党课6篇:坚定不移推进党风廉政建设和反腐败工作为全市高质量发展提供坚强保障.docx
- 纪检监察干部队伍教育整顿对照六个方面自查自纠检视剖析报告(3篇).docx
- 关于同志政治素养、廉洁自律的鉴定评价材料2篇.docx
- 关于司法局2024-2025年意识形态工作汇报5篇.docx
- 关于进一步提高党委理论学习中心组学习质量的实施意见+国企改革研讨交流材料.docx
最近下载
- 2020工业机器人系统操作员职业技能标准(职业编码:6-30-99-00).docx
- 林木砍伐协议书范本.docx VIP
- 《2025年基于人工智能的课堂教学分析》范文.docx VIP
- 广西事业单位C类综合应用能力真题及答案.pdf
- 急性上消化道出血诊治流程专家共识(共33张PPT)【33页】.pptx
- 口腔材料学:第十章 模型材料.ppt
- 成都市高新区2025届初三一诊(同期末考试)语文试卷.pdf
- 基坑坍塌安全隐患事故模拟倒查分析20220905.pptx
- CECS391-2014 风力发电机组消防系统技术规程.docx
- 【新教材教案】人教版高中地理选择性必修二:3.2地区产业结构的变化 教学设计(二).pdf VIP
文档评论(0)