c课件运算符重载和类重载

c课件运算符重载和类重载

ID:36875708

大小:284.50 KB

页数:51页

时间:2019-05-10

c课件运算符重载和类重载_第1页
c课件运算符重载和类重载_第2页
c课件运算符重载和类重载_第3页
c课件运算符重载和类重载_第4页
c课件运算符重载和类重载_第5页
资源描述:

《c课件运算符重载和类重载》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第12章运算符重载和类型重载主要内容:12.1运算符重载规则12.2类型重载在C++中有这样的情况,同一个类型或运算符在不同的类中代表不同的意思或者实施不同的运算,这就是面向对象的三大特点之一的多态。函数重载是C++语言中多态的一种表现形式,运算符重载和类型重载是多态的另外两种表现形式。运算符重载是对已有的运算符赋予多重含义。C++中预定义的运算符的操作对象只能是基本数据类型,对于很多用户自定义类型,也需要有类似的运算操作,这就提出了对运算符进行重新定义,赋予已有符号以新功能的要求。同一个运算符作用于不同类型的数

2、据导致不同的行为。12.1运算符重载概述运算符重载只能对系统提供的已有运算定义新的运算含义,不能创造全新的运算符,同时还不能改变运算符原有的语法结构、操作数个数、优先级和结合性,不能有二义性。不是所有的运算符都能重载,不能重载的运算符有:作用域运算符(::)、条件运算符(?:)、直接成员访问运算符(.)、sizeof运算符、解除对指向类成员的指针的引用运算符(.*)。运算符重载的关键字是operator。针对一个具体类的已有运算符重载有两种途径:1)将运算符重新定义为类的成员函数;2)将运算符重新定义为类的友元函

3、数。一、运算符重载方法定义一个重载运算符就像定义一个函数,只是该函数的名字是operator@,这里@代表运算符。函数参数表中参数的个数取决于两个因素:1)运算符是一元的(一个参数)还是二元的(两个参数)。2)运算符被定义为友元函数(对于一元是一个参数,对于二元是两个参数)还是成员函数(对于一元没有参数,对于二元是一个参数—对象变为左侧参数)。1.将运算符重载为类的成员函数将运算符重载为类的成员函数就是在类中用关键字operator定义一个成员函数,函数名就是重载的运算符。运算符如果重载为类的成员函数,它就可以自

4、由地访问该类的数据成员。运算符重载为类的成员函数的一般格式为:<类型><类名>::operator<要重载的运算符>(形参表){函数体}其中,类型为运算符重载函数的返回类型。类名为成员函数所属类的类名,<重载运算符>即为重载函数名。形参为参加运算的对象或数据。【例题12.1】复数的加减运算符重载#includeusingnamespacestd;classComplex{private:floatreal,image;public:Complex(floatr=0,floa

5、ti=0);ComplexAdd(constComplex&c);//定义一个Add函数Complexoperator+(constComplex&c);//重载+运算符Complexoperator-(constComplex&c);//重载-运算符Complex&operator+=(constComplex&c);//重载+=运算符,复合赋值操作符必须返回左操作数的引用,必须定义为成员函数Complex&operator=(constComplex&other);//重载=运算符,赋值运算符必须返回对*th

6、is的引用,voidShow(inti);};Complex::Complex(floatr,floati){real=r;image=i;}voidComplex::Show(inti){//一般情况下,这里不应该有参数i,本例的目的是为了区分不同的复数,便于观看结果cout<<"复数:c"<0)cout<<"+"<

7、stComplex&c){Complext;t.real=this->real+c.real;t.image=this->image+c.image;returnt;}ComplexComplex::operator+(constComplex&c){Complext;t.real=this->real+c.real;t.image=this->image+c.image;returnt;}ComplexComplex::operator-(constComplex&c){Complext;t.real=this

8、->real-c.real;t.image=this->image-c.image;returnt;}Complex&Complex::operator+=(constComplex&c){real=real+c.real;image=image+c.image;return*this;}Complex&Complex::operator=(constComplex&ot

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。