C面向对象程序设计教程(下)ppt课件.ppt

C面向对象程序设计教程(下)ppt课件.ppt

ID:59476198

大小:6.02 MB

页数:77页

时间:2020-09-14

C面向对象程序设计教程(下)ppt课件.ppt_第1页
C面向对象程序设计教程(下)ppt课件.ppt_第2页
C面向对象程序设计教程(下)ppt课件.ppt_第3页
C面向对象程序设计教程(下)ppt课件.ppt_第4页
C面向对象程序设计教程(下)ppt课件.ppt_第5页
资源描述:

《C面向对象程序设计教程(下)ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、汇天地之长育学子精英C++面向对象程序设计教程(下)第章多态性Chapter5Polymorphism第章模板与异常处理Chapter6Template第章流Chapter7stream3567所谓多态性就是不同对象收到相同的消息时,产生不同的动作。通俗的说,多态性是指用一个名字定义不同的函数,这些函数执行不同但又有类似的操作,即用同样的接口访问功能不同的函数,从而实现“一个接口,多种方法”。以前讲的“函数重载”,就是一种多态。5.1运算符重载intx,y,z;z=x+y;这是将两个整数相加的方法,非常简单.若有一个复数

2、类complexclasscomplex{public:doublereal;doubleimag;complex(doubler=0,doublei=0){real=r;imag=i;}};把complex的两个对象com1和com2加在一起。能否这样实现:complexcom1(1.1,2.2),com2(3.3,4.4),total1;total1=com1+com2;C++为运算符提供了一种方法,即在进行运算符重载时,必须写一个运算符函数,其名字为operator后随一个要重载的运算符。函数功能operator+

3、()加法operator-()减法operator*()乘法operator/()除法operator<()小于……表5.1运算符函数这样,编译器在一个运算符的两边“看”到自定义的数据类型,就执行型用户自己的函数,而不是内部运算符的常规程序.classcomplex{public:doublereal;doubleimag;complex(doubler=0,doublei=0){real=r;imag=i;}};complexoperator+(complexco1,complexco2){complextemp;te

4、mp.real=co1.real+co2.real;temp.imag=co1.imag+co2.imag;returntemp;}voidmain(){complexcom1(1.1,2.2),com2(3.3,4.4),total1,total2;total1=operator+(com1,com2);//显示调用cout<

5、";}注意:(1)重载运算符要与原有功能类似。(2)重载运算符,只能重载已有的运算符.程序员不能臆造新的运算符来扩充C++语言。(3)类属关系运算符“.”、指针运算符“*”、作用域运算符“::”、sizeof运算符不能被重载。(4)不能改变运算符的操作数个数。例如“+”,只能是两个操作数。(5)不能改变运算符原有的优先级。x=y-a*b;例:用*实现两个复数相乘编程练习classcomplex{private:doublereal;doubleimag;public:complex(doubler=0,doublei=0

6、){real=r;imag=i;}};思考:如何实现运算符重载呢?5.2友元运算符函数运算符重载函数是在类的外部定义的,这个运算的重载函数只能访问类中的公有数据成员,而不访问类的私有数据成员。解决办法是:(1)定义为它将要操作的类的成员函数(2)是定义类的友元函数。友元运算符函数定义的语法形式:classx{friend返回类型operator运算符(形参表)};classcomplex{private:doublereal;doubleimag;public:complex(doubler=0,doublei=0){r

7、eal=r;imag=i;}voidprint();friendcomplexoperator+(complexco1,complexco2);};complexoperator+(complexco1,complexco2){complextemp;temp.real=co1.real+co2.real;temp.imag=co1.imag+co2.imag;returntemp;}voidcomplex::print(){cout<0)cout<<"+";if(imag!=0)cout<<

8、imag<<"i";}voidmain(){complexcom1(1.1,2.2),com2(3.3,4.4),total1,total2;total1=com1+com2;total1.print();}以上程序在vc6中运行会出现如下错误:提示不能访问私有成员,没有这个访问权限。这是VC的一个经典BUG和nam

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

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

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