欢迎来到天天文库
浏览记录
ID:52344197
大小:292.50 KB
页数:56页
时间:2020-04-04
《多态性同样的消息被不同类型对象接收,导致完全不同.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库。
1、多态性:同样的“消息”被不同类型对象接收,导致完全不同的“行为”!消息:对成员函数的调用;行为:函数实现(操作);第8章多态性和虚函数封装性:基础继承性:关键多态性:补充面向对象的三大特征C++语言基础1§8.1函数重载§8.2运算符重载§8.3静态联编和动态联编§8.4虚函数§8.5纯虚函数和抽象类§8.6虚析构函数C++语言基础第8章多态性和虚函数28.1函数重载相同作用域内的同一个函数名对应不同的实现,(赋以同一个函数名多个含义);成员函数、非成员函数均可重载;要求:编译器能唯一确定采用哪一个函数实现;依据:参数类型或个数不同,对返回值没
2、有要求用相同名字访问一组相关联的函数,由编译程序选择,有助于解决程序复杂性问题。C++语言基础3string::string(intsize){length=size;sptr=newchar[length+1];*sptr=' ';}string::string(char*s){length=strlen(s);sptr=newchar[length+1];strcpy(sptr,s);}string::string(string&s1){length=s1.length;sptr=newchar[length+1];strcpy(sptr
3、,s1.sptr);}C++语言基础classstring{public:string(char*s);string(string&s1);string(intsize=80);~string(){deletesptr;}intgetlen(){returnlength;}voidprint(){cout<4、.print();cout<5、性;重载函数的注意事项C++语言基础intf(inta);doublef(inta);由typedef定义的类型别名不能区分重载函数。用一函数的重复说明typedefdoublemoney;voidf(doubleincome);voidf(moneyincome);函数重载必须从形式参数上区分,不能仅靠函数返回值加以区分;6C++语言基础函数重载二义性:C++语言的编译程序无法在多个重载函数中选择正确的函数进行调用;主要原因:C++语言的自动隐式类型转换C++语言的设置参数默认值重载函数的二义性7C++语言基础floatabs(floatx)6、{return(x>0?x:-x);}doubleabs(doublex){return(x>0?x:-x);}voidmain(){cout<7、多重含义,使之用于特定类的对象完成特定的功能。一、运算符重载的相关问题C++语言基础二、重载的两种形式10一、相关问题哪些运算符可以重载?除..*::?:外所有运算符均可;包括:算术、位操作、逻辑、比较、赋值及其它运算符如:[]()->->*newdeleteC++语言基础原则:含义清楚,不能有二义性。限制(1)不可臆造新的运算符;(2)“4不变”:优先级、结合性、语法结构和操作数个数不变;编译程序如何选择运算符函数?遵循函数重载原则,寻找参数匹配的运算符函数;11成员函数友元函数重载为类的成员函数二、运算符重载函数的两种形式C++语言基础“o8、perator”是运算符重载函数的关键字;<运算符>给定要重载的运算符名称;重载为成员函数时,总隐含参数——this指针;<类型>operator<运
4、.print();cout<5、性;重载函数的注意事项C++语言基础intf(inta);doublef(inta);由typedef定义的类型别名不能区分重载函数。用一函数的重复说明typedefdoublemoney;voidf(doubleincome);voidf(moneyincome);函数重载必须从形式参数上区分,不能仅靠函数返回值加以区分;6C++语言基础函数重载二义性:C++语言的编译程序无法在多个重载函数中选择正确的函数进行调用;主要原因:C++语言的自动隐式类型转换C++语言的设置参数默认值重载函数的二义性7C++语言基础floatabs(floatx)6、{return(x>0?x:-x);}doubleabs(doublex){return(x>0?x:-x);}voidmain(){cout<7、多重含义,使之用于特定类的对象完成特定的功能。一、运算符重载的相关问题C++语言基础二、重载的两种形式10一、相关问题哪些运算符可以重载?除..*::?:外所有运算符均可;包括:算术、位操作、逻辑、比较、赋值及其它运算符如:[]()->->*newdeleteC++语言基础原则:含义清楚,不能有二义性。限制(1)不可臆造新的运算符;(2)“4不变”:优先级、结合性、语法结构和操作数个数不变;编译程序如何选择运算符函数?遵循函数重载原则,寻找参数匹配的运算符函数;11成员函数友元函数重载为类的成员函数二、运算符重载函数的两种形式C++语言基础“o8、perator”是运算符重载函数的关键字;<运算符>给定要重载的运算符名称;重载为成员函数时,总隐含参数——this指针;<类型>operator<运
5、性;重载函数的注意事项C++语言基础intf(inta);doublef(inta);由typedef定义的类型别名不能区分重载函数。用一函数的重复说明typedefdoublemoney;voidf(doubleincome);voidf(moneyincome);函数重载必须从形式参数上区分,不能仅靠函数返回值加以区分;6C++语言基础函数重载二义性:C++语言的编译程序无法在多个重载函数中选择正确的函数进行调用;主要原因:C++语言的自动隐式类型转换C++语言的设置参数默认值重载函数的二义性7C++语言基础floatabs(floatx)
6、{return(x>0?x:-x);}doubleabs(doublex){return(x>0?x:-x);}voidmain(){cout<7、多重含义,使之用于特定类的对象完成特定的功能。一、运算符重载的相关问题C++语言基础二、重载的两种形式10一、相关问题哪些运算符可以重载?除..*::?:外所有运算符均可;包括:算术、位操作、逻辑、比较、赋值及其它运算符如:[]()->->*newdeleteC++语言基础原则:含义清楚,不能有二义性。限制(1)不可臆造新的运算符;(2)“4不变”:优先级、结合性、语法结构和操作数个数不变;编译程序如何选择运算符函数?遵循函数重载原则,寻找参数匹配的运算符函数;11成员函数友元函数重载为类的成员函数二、运算符重载函数的两种形式C++语言基础“o8、perator”是运算符重载函数的关键字;<运算符>给定要重载的运算符名称;重载为成员函数时,总隐含参数——this指针;<类型>operator<运
7、多重含义,使之用于特定类的对象完成特定的功能。一、运算符重载的相关问题C++语言基础二、重载的两种形式10一、相关问题哪些运算符可以重载?除..*::?:外所有运算符均可;包括:算术、位操作、逻辑、比较、赋值及其它运算符如:[]()->->*newdeleteC++语言基础原则:含义清楚,不能有二义性。限制(1)不可臆造新的运算符;(2)“4不变”:优先级、结合性、语法结构和操作数个数不变;编译程序如何选择运算符函数?遵循函数重载原则,寻找参数匹配的运算符函数;11成员函数友元函数重载为类的成员函数二、运算符重载函数的两种形式C++语言基础“o
8、perator”是运算符重载函数的关键字;<运算符>给定要重载的运算符名称;重载为成员函数时,总隐含参数——this指针;<类型>operator<运
此文档下载收益归作者所有