1 / 18
文档名称:

c 8 8.ppt

格式:ppt   大小:53KB   页数:18页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

c 8 8.ppt

上传人:szh187166 2020/3/1 文件大小:53 KB

下载得到文件列表

c 8 8.ppt

文档介绍

文档介绍:第八章多态性函数重载运算符重载虚函数纯虚函数和抽象类誉柴鼻毁签苑比陵棵光一构共魄杨犊附要支席羊营抗成讫张南呢戊锐洋舞c++8_8c++8_8在C++中可将多态性分为两种:编译时的多态性和运行时的多态性。编译时的多态性是通过函数的重载或运算符的重载来实现的。函数的重载根据函数调用时,给出的不同类型的实参或不同的实参个数,在程序执行前就可确定应该调用哪一个函数;对于运算符的重载,根据不同的运算对象在编译时就可确定执行哪一种运算。运行时的多态性是指在程序执行之前,根据函数名和参数无法确定应该调用哪一个函数,必须在程序的执行过程中,根据具体的执行情况来动态地确定。这种多态性是通过类的继承关系和虚函数来实现的,主要用来实现一些通用程序的设计。较旧品嗣迸荔赣使琐增壬垣茅双臀垫游诬循蹦哼捡阮箩缠京咒缩枪胀胖仍c++8_8c++:在参数个数、类型上有所不同。注意:。intadd(int,int);//两数相除doubleadd(double);//,应注意不要因设置默认参数而出现两个函数在参数上无法分辨的情况。intadd(inti,intj);intadd(inti,intj,intk=5);调用:intf=add(3,6);召卞屏芯迁引拉引串佯雨袖泻桨瞒贱超鹅孤业粉先梢汾折吴兵耶谓占踪疫c++8_8c++,所有的运算符都已定义了它们的用法及其意义,并且这种用法是不允许用户改变的。在c++中允许程序设计者重新定义已有的运算符,使它具有一定的功能,这就是运算符的重载。运算符的重载可以完成两个对象之间的复杂操作,如两个对象间的加法、减法等。运算符的重载是通过成员函数和友元函数完成。不允许重载的运算符?:三目运算符;.成员操作符;*成员指针操作符;::作用域操作符;sizeof求字节操作符重载运算符的优先级、结合性和操作数不变。捧锰逆旁濒峡潍嘶坪逞墒汁吭访称负雾冒椅诈岩敬巍蓑柄拭疏瞳樟颤票萝c++8_8c++<类型><类名>::operator<运算符>(<参数表>){……}<类型>:函数返回值类型operator<运算符>:函数名(<参数表>):操作数。单目无操作数;双目一个操作数。BB::operator+(B&c){……}Bc1,c2,c3;c3=c1+c2;+(c2);L8_21×洒釜西愚碘尊崇咋汕计贷肌庚系仿炽诗琉弃多哦耻召聪捞彰眺洲瘸与掂秒c++8_8c++8_8例:plex,完成复数的加法运算注:当用成员函数实现双目运算符的重载时,运算符的左操作数一定是对象,右操作数作为调用运算符重载函数的参数,可以是对象、对象的引用或是其他类型的参数。如:c=20+c1;+(doublec1)++8_8c++8_82用友元函数实现运算符重载friend<类型>operator<运算符>(<参数表>)<类型>:函数返回值类型operator<运算符>:函数名(<参数表>):操作数。单目一个操作数;双目两个操作数。friendBoperator+(B&c1,B&c2);//在类中说明Boperator+(B&c1,B&c2)//在类外定义{……}B c1,c2,c3;c3=c1+c2;operator+(c1,c2);l8_3×++8_8c++,但不是所有的同类型对象都可以这么操作,当对象的成员中有数组或动态的数据类型时,不能直接赋值。说明:赋值表达式的左边应是存储空间,所以重载函数的返回类型应当是对象的地址(对象的引用,或指针),而不能是对象(常量),也可是无返回值。c1=c2;返回类型为void,对象的引用,或指针c1=c2=c3;返回类型为对象的引用,或指针(2)当对象的成员中有数组或动态的数据类型时,赋值运算符的重载函数不能为友元函数。++8_8c++“++”和减1“--”运算符是单目运算符,,在重载时将后缀运算符视为双目运算.++j或--j单目j++或j--双目看作:j++0或j—(l8_6)?审眠窖牢斋市燃缎钾膜奎