- 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课件运算符重载和类重载
第12章 运算符重载和类型重载; 在C++中有这样的情况,同一个类型或运算符在不同的类中代表不同的意思或者实施不同的运算,这就是面向对象的三大特点之一的多态。
函数重载是C++语言中多态的一种表现形式,运算符重载和类型重载是多态的另外两种表现形式。 ; 运算符重载是对已有的运算符赋予多重含义。
C++中预定义的运算符的操作对象只能是基本数据类型,对于很多用户自定义类型,也需要有类似的运算操作,这就提出了对运算符进行重新定义,赋予已有符号以新功能的要求。
同一个运算符作用于不同类型的数据导致不同的行为。; 运算符重载只能对系统提供的已有运算定义新的运算含义,不能创造全新的运算符,同时还不能改变运算符原有的语法结构、操作数个数、优先级和结合性,不能有二义性。不是所有的运算符都能重载,不能重载的运算符有:作用域运算符(::)、条件运算符(?:)、直接成员访问运算符(.)、sizeof运算符、解除对指向类成员的指针的引用运算符(.*)。
运算符重载的关键字是operator。针对一个具体类的已有运算符重载有两种途径:
1)将运算符重新定义为类的成员函数;
2)将运算符重新定义为类的友元函数。;一、运算符重载方法 ;1.将运算符重载为类的成员函数;【例题12.1】 复数的加减运算符重载 ;Complex::Complex(float r,float i)
{
real=r; image=i;
}
void Complex::Show(int i)
{ //一般情况下,这里不应该有参数i,本例的目的是为了区分不同的复数,便于观看结果
cout复数:ci=real;
if(image0)
cout+imageiendl;
if(image0)
coutimageiendl;
};Complex Complex::Add(const Complex c)
{
Complex t;
t.real=this-real+c.real;
t.image=this-image+c.image;
return t;
}
Complex Complex::operator+(const Complex c)
{
Complex t;
t.real=this-real+c.real;
t.image=this-image+c.image;
return t;
}
;Complex Complex::operator-(const Complex c)
{
Complex t;
t.real=this-real-c.real;
t.image=this-image-c.image;
return t;
}
Complex Complex::operator+=(const Complex c)
{
real=real+c.real;
image=image+c.image;
return *this;
}
Complex Complex::operator=(const Complex other)
{
if(this == other)
return *this;
this-real=other.real;
this-image=other.image;
return *this;
}
;int main()
{
Complex c1(12,35),c2(20,46),c3,c4,c5,c6;
c1.Show(1);
c2.Show(2);
c3=c1.Add(c2);
c3.Show(3);
c4=c1+c2;
c4.Show(4);
c2+=c1;
c2.Show(2);
c5=c1-c2;
c5.Show(5);
return 0;
}
; 如果我们把“operator+”看成函数名,可以在main()函数中写出如下语句:
c3=c1.Add(c2);
c3=c1.operator+(c2);
这时,operator+就完全是一个函数了(它本质上就是函数),.Add()和operator+的作用和功能完全相同,只是表现形式有些区别。 ;【例题12.2】一元运算符重载,在Time类(描述时间的类,用三个数据成员分别存放时、分和秒)中重载自加运算符,即
您可能关注的文档
最近下载
- 深度学习无监督学习算法研究进展与应用分析.docx VIP
- ERP选型报告.ppt VIP
- 2022年卫生监督技能竞赛试题库.pdf VIP
- 氟比洛芬凝胶贴膏中国市场调研报告20250608.pdf VIP
- 深度学习算法研究进展.docx VIP
- 成都武侯高中高一入学英语分班考试真题含答案.docx VIP
- 无人机的通信系统.pptx VIP
- 2025年天津市面向甘南籍未就业高校毕业生招聘事业单位工作人员公笔试备考试题含答案详解(黄金题型).docx
- 卫生监督技能竞赛测试题(长沙-职业卫生、放射卫生)题NO6(答案).pdf VIP
- 2025年四川高速公路建设开发集团有限公司管理岗位毕业生招聘考试笔试试题(含答案).docx VIP
文档评论(0)