欢迎来到天天文库
浏览记录
ID:33579018
大小:229.96 KB
页数:10页
时间:2019-02-27
《第二章 c++基础 (1)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C++程序设计基础本章内容¢多态性概述第四章函数重载和运算符重载¢函数重载¢运算符重载¢赋值运算和拷贝策略¢特殊运算符重载124.1多态性概述本章内容¢多态性是面向对象程序设计的重要特征之一。¢多态性概述¢多态性是指发出同样的消息被不同类型的对象¢函数重载接收时有可能导致完全不同的行为。¢普通函数重载¢多态性分类:¢类成员函数重载¢重载多态、强制多态、包含多态、参数多态¢函数重载的二义性问题¢多态的实现:¢运算符重载¢函数重载静态:编译时多态¢运算符重载¢赋值运算和拷贝策略¢虚函数动态:运行时多态¢特殊运算符重载344.2函数重载4
2、.2函数重载¢C++允许功能相近的函数在相同的作用¢普通函数域内以相同函数名声明,从而形成重载。(1)intmax(inta,intb);//intmax(int,int);方便使用,便于记忆。intmax(inta,intb,intc);(2)intadd(intx,inty,intz);¢参数的个数不同或类型不同floatadd(float,float,float);intadd(intx,inty);(3)intabs(inti);形参类型不同floatadd(floatx,floaty);doubleabs(doubled)
3、;intadd(intx,inty);intadd(intx,inty,intz);形参个数不同5614.2函数重载4.2函数重载¢类中成员函数¢编译程序将根据实参和形参的类型及个//例4_1类中成员函数重载结果:5#include4.3数的最佳匹配来选择调用哪一个函数。classA{public:Programintadd(intx,inty);intadd(intx,inty);voidprint(inti){cout<4、x,inty);voidprint(doublef){cout<5、print("program");a.print("program",3);{returnx+y;}{returnx-y;}}784.2函数重载4.2函数重载classprint{¢不要将不同功能的函数定义为重载函数,以public:重载函数的形参不同:免出现对调用结果的误解;voidprint(constchar∗s);参数个数不同voidprint(constchar∗s,inti=0);};或类型不同¢重载函数的形参必须不同:参数个数不同或printa;者类型不同。否则会在编译时会出现调用模a.print(″number″);6、//产生二义性糊的现象,也就是二义性错误。intprint(int);//产生二义性floatprint(int);¢在对重载函数设置缺省参数值时,要避免产intpri(constint&);//产生二义性生二义性。intpri(int);voidpri(unsignedint);//产生二义性voidpri(int);910本章内容4.3运算符重载¢问题——复数运算¢多态性概述classcomplex//复数类声明¢函数重载{¢运算符重载public:complex(doubler=0.0,doublei=0.0)//构造函数¢赋7、值运算和拷贝策略{real=r;imag=i;}¢特殊运算符重载voiddisplay();//显示复数的值private:doublereal;如何加减运doubleimag;算?};111224.3运算符重载4.3运算符重载¢例:字符串处理¢运算符重载是对已有的运算符赋予多重含义//例4_2字符串处理(无运算符重载)¢必要性#include¢C++中预定义的运算符只能是基本数据类型,而不usingnamespacestd;适用于用户自定义类型(如类)voidmain()¢实现机制{chars1[20]="He8、llo";¢将指定的运算表达式转化为对运算符函数的调用,chars2[20]="world";运算对象转化为运算符函数的实参。chars3[20];strcpy(s3,s1);//字符串拷贝¢编译系统对重载运算符的选择,遵循函数重载的
4、x,inty);voidprint(doublef){cout<5、print("program");a.print("program",3);{returnx+y;}{returnx-y;}}784.2函数重载4.2函数重载classprint{¢不要将不同功能的函数定义为重载函数,以public:重载函数的形参不同:免出现对调用结果的误解;voidprint(constchar∗s);参数个数不同voidprint(constchar∗s,inti=0);};或类型不同¢重载函数的形参必须不同:参数个数不同或printa;者类型不同。否则会在编译时会出现调用模a.print(″number″);6、//产生二义性糊的现象,也就是二义性错误。intprint(int);//产生二义性floatprint(int);¢在对重载函数设置缺省参数值时,要避免产intpri(constint&);//产生二义性生二义性。intpri(int);voidpri(unsignedint);//产生二义性voidpri(int);910本章内容4.3运算符重载¢问题——复数运算¢多态性概述classcomplex//复数类声明¢函数重载{¢运算符重载public:complex(doubler=0.0,doublei=0.0)//构造函数¢赋7、值运算和拷贝策略{real=r;imag=i;}¢特殊运算符重载voiddisplay();//显示复数的值private:doublereal;如何加减运doubleimag;算?};111224.3运算符重载4.3运算符重载¢例:字符串处理¢运算符重载是对已有的运算符赋予多重含义//例4_2字符串处理(无运算符重载)¢必要性#include¢C++中预定义的运算符只能是基本数据类型,而不usingnamespacestd;适用于用户自定义类型(如类)voidmain()¢实现机制{chars1[20]="He8、llo";¢将指定的运算表达式转化为对运算符函数的调用,chars2[20]="world";运算对象转化为运算符函数的实参。chars3[20];strcpy(s3,s1);//字符串拷贝¢编译系统对重载运算符的选择,遵循函数重载的
5、print("program");a.print("program",3);{returnx+y;}{returnx-y;}}784.2函数重载4.2函数重载classprint{¢不要将不同功能的函数定义为重载函数,以public:重载函数的形参不同:免出现对调用结果的误解;voidprint(constchar∗s);参数个数不同voidprint(constchar∗s,inti=0);};或类型不同¢重载函数的形参必须不同:参数个数不同或printa;者类型不同。否则会在编译时会出现调用模a.print(″number″);
6、//产生二义性糊的现象,也就是二义性错误。intprint(int);//产生二义性floatprint(int);¢在对重载函数设置缺省参数值时,要避免产intpri(constint&);//产生二义性生二义性。intpri(int);voidpri(unsignedint);//产生二义性voidpri(int);910本章内容4.3运算符重载¢问题——复数运算¢多态性概述classcomplex//复数类声明¢函数重载{¢运算符重载public:complex(doubler=0.0,doublei=0.0)//构造函数¢赋
7、值运算和拷贝策略{real=r;imag=i;}¢特殊运算符重载voiddisplay();//显示复数的值private:doublereal;如何加减运doubleimag;算?};111224.3运算符重载4.3运算符重载¢例:字符串处理¢运算符重载是对已有的运算符赋予多重含义//例4_2字符串处理(无运算符重载)¢必要性#include¢C++中预定义的运算符只能是基本数据类型,而不usingnamespacestd;适用于用户自定义类型(如类)voidmain()¢实现机制{chars1[20]="He
8、llo";¢将指定的运算表达式转化为对运算符函数的调用,chars2[20]="world";运算对象转化为运算符函数的实参。chars3[20];strcpy(s3,s1);//字符串拷贝¢编译系统对重载运算符的选择,遵循函数重载的
此文档下载收益归作者所有