- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 运算符重载
一、运算符重载的概念
运算符重载的概念
C++中的表达式由运算符和操作数按照规则构成。例如,算术运算符包括加“+”、减“-”、乘“*”、除“/”和取模“%”。如果不做特殊处理,则这些算术运算符通常只能用于对基本数据类型的常量或变量进行运算,而不能用于对象之间的运算。
运算符重载,就是给已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时产生不同的行为。运算符重载的目的是使得C++中的运算符也能够用来操作对象。
用于类运算的运算符通常都要重载。有两个运算符,系统提供了默认的重载版本:赋值运算符= 和 地址运算符。
? 对于=,系统默认重载为对象成员变量的复制。
? 对于,系统默认重载为返回任何类对象的地址。
可重载的运算符
不可重载的运算符和符号
这个一定要记住,每年必考
与其他函数一样,重载运算符有一个返回类型和一个参数列表。这样的函数称为运算符函数。
运算符可以被重载为全局函数,也可以被重载为类的成员函数。声明为全局函数时,通常应是类的友元。
故运算符函数是一种特殊的友元函数或成员函数
重载运算符为类的成员函数
#includeiostream
using namespace std;
//复数类,如:3+4i 实数和虚数,做加减的时候,是实数跟实数加减,虚数跟虚数加减
class myComplex{
????private:
????????//实数跟虚数
????????double real,imag;
????public:
????????//构造函数
????????myComplex();
????????myComplex(double r,double i);
????????//成员函数
????????void outCom();
????????//成员函数,减法
????????myComplex operator-(const myComplex c);
????????//友元函数,加法
????????friend myComplex operator+(const myComplex c1,const myComplex c2);
};
myComplex::myComplex() {
????real=0;
????imag=0;
}
myComplex::myComplex(double r,double i) {
????real=r;
????imag=i;
}
void myComplex::outCom() {
????cout(real,imag);
}
//减法
myComplex myComplex::operator- (const myComplex c) {
????return myComplex(this-real - c.real,this-imag - c.imag);
}
//加法,友元函数
myComplex operator+(const myComplex c1,const myComplex c2) {
????return myComplex(c1.real+c2.real,c1.imag+c2.imag);
}
int main() {
????myComplex c1(1,2),c2(3,4),res;
????c1.outCom();
????coutoperator+;
????c2.outCom();
????cout=;
????res=c1+c2;//对象可以做加法了
????res.outCom();
????coutendl;
????
????c1.outCom();
????coutoperator-;
????c2.outCom();
????cout=;
????res=c1-c2;//对象可以做减法了
????res.outCom();
????coutendl;
????return 0;
}
输出:
(1,2)operator+(3,4)=(4,6)
(1,2)operator-(3,4)=(-2,-2)
重载运算符为友元函数
#includeiostream
using namespace std;
class myComplex{
????private:
?????? ?double real,imag;
????public:
????? ??myComplex();
???? ???myComplex(double r,double i);
????? ??void outCom();
????? ??//友元函数
????? ??friend myComplex operator+(const myComplex c1,const myComplex c2);
?????
您可能关注的文档
- 《C++程序设计》学习笔记总结 - 第八章 文件操作.docx
- 《C++程序设计》学习笔记总结 - 第二章 面向对象的基本概念.docx
- 《C++程序设计》学习笔记总结 - 第九章 函数模板与类模板.docx
- 《C++程序设计》学习笔记总结 - 第六章 多态与虛函数.docx
- 《C++程序设计》学习笔记总结 - 第七章 输入输出流.docx
- 《C++程序设计》学习笔记总结 - 第三章 类和对象进阶.docx
- 《C++程序设计》学习笔记总结 - 第五章 类的继承与派生.docx
- 《C++程序设计》学习笔记总结 - 第一章 C++语言简介.docx
- 《计机算网络原理》学习笔记总结 - 第八章 网络安全基础.docx
- 《计机算网络原理》学习笔记总结 - 第二章 网络应用.docx
- 《计机算网络原理》学习笔记总结 - 第六章 物理层.docx
- 《计机算网络原理》学习笔记总结 - 第七章 无线与移动网络.docx
- 《计机算网络原理》学习笔记总结 - 第三章 传输层.docx
- 《计机算网络原理》学习笔记总结 - 第四章 网络层.docx
- 《计机算网络原理》学习笔记总结 - 第五章 数据链路层与局域网.docx
- 《计机算网络原理》学习笔记总结 - 第一章 计算机网络概述 .docx
文档评论(0)