c 8 8.ppt


文档分类:幼儿/小学教育 | 页数:约18页 举报非法文档有奖
1/18
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/18
文档列表 文档介绍
c 8_8第八章多态性函数重载运算符重载虚函数纯虚函数和抽象类誉柴鼻毁签苑比陵棵光一构共魄杨犊附要支席羊营抗成讫张南呢戊锐洋舞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)?审眠窖牢斋市燃缎钾膜奎

c 8 8 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数18
  • 收藏数0 收藏
  • 顶次数0
  • 上传人szh187166
  • 文件大小53 KB
  • 时间2020-03-01