第四章继承和派生多态性.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章继承和派生多态性

注意: (1)在C++中几乎所有的运算符(除“.”,“.*”, “::”,“?:”外)都可以被重载。 (3)当重载为类的成员函数时,运算符重载函数的形参个数要比运算符操作数个数少一个;若重载为友元函数,则参数个数与操作数个数相同。 (2)运算符的重载既不会改变原运算符的优先级和结合性,也不会改变使用运算符的语法和操作数个数。 (5)成员函数与友元函数的选用: 若一运算符的操作需要修改类对象的状态,则它应该是成员函数。需要左值操作数的运算符(如=,*=,++)的重载最好用成员函数;相反,如果运算符所需的操作数(尤其是第一个操作数)希望有隐式类型转换,则该运算符重载必须用友元,而不是成员函数。 (4)当重载为友元函数时,“=”、“()”、“[]”、“-”等运算符不能重载。 class complex{ int rem,imp; public: complex(int a){rem=a;imp=0;} complex(int a,int b){rem=a;imp=b;} complex operator+(complex ob) { complex temp; temp.rem=rem+ob.rem; temp.imp=imp+ob.imp; return temp; }; main() { complex z(2,3),k(3,4); z=z+27; z=27+z; } 相当于调用: z.operator+(complex(27)); 27.operator+(z); 这里应使用友元函数。 friend complex operator+(complex a,complex b) { complex temp; temp.rem=a.rem+b.rem; temp.imp=a.imp+b.imp; return temp; } 相当于调用: operator+(complex(27),z) 3. 几种特殊运算符的重载 (1)重载++和— 例子 用成员函数重载++ three_d three_d::operator++() { x++; y++; z++; return *this; } 用友元函数对象参数重载++ three_d operator++(three_d opl) { opl.x++; opl.y++; opl.z++; return opl; } //不能改变对象的值 用友元函数指针参数重载++ three_d operator++(three_d *opl) { opl-x++; opl-y++; opl-z++; return *opl; } //C++不知道如何激活它 用友元函数引用参数重载++ three_d operator++(three_d opl) { opl.x++; opl.y++; opl.z++; return opl; } (2)++、--的前缀形式和后缀形式 如何区别运算符“++”和“- - ”的两种不同形式呢? 在C++中规定: 对于前缀形式的递增/递减运算符,以和一般的 一元运算符同样的方式将它们重载为: type type::operator++() type operator++(type) 或 type type::operator--() type operator--(type) 对于后缀形式的递增/递减运算符,将它们重载为: type type::operator++(int) type operator++(type,int) 或 type type::operator--(int) type operator--(type,int) 调用: ++a; //隐式调用 a.operator++(); //显示调用,成员函数 operator++(a); //显示调用,友元函数 调用: a++; //隐式调用 a.operator++(0); //显示调用,成员函数 operator++(a,0); //显示调用,友元函数 class Point:public Location{ p

文档评论(0)

jyf123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6153235235000003

1亿VIP精品文档

相关文档