- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
小结:C++运算符重载 目的:将以前用于普通类型的运算符能用于类类型 实现方法:在类中定义运算符重载函数 ,可以定义成类的成员函数,也可以定义成类的友元函数。 * 例:指出程序中的错误,并改正。 class integer { public: integer(int i=0) {value=i;} //含一个参数的构造函数能完成类型转换 integer operator +(integer i)//有类型转换函数,则两个类类型的对象可以进行加法运算 { return integer(value+=i.value); } private: int value; }; void main() { integer i1=10;//生成第一个对象 integer i2=i1+5; //生成第二个对象,通过类类型的加法的结果进行赋值,等价于:i1.operator +(5) integer i3=3+i2; } 错误,等价于3.operator +(i2) * 改正: class integer { public: integer(int i=0) {value=i;} friend integer operator +(integer i1,integer i2); private: int value; }; integer operator +(integer i1,integer i2) { integer temp=i1.value+i2.value; return temp; } * 下面运算符能被重载的是_____。 :: ?: . % % * 补充完整下面程序,结果为3, 8。 class A { public: A(int aa,int bb){a=aa;b=bb;} void operator _______(A p) { ____________; ____________; } void show(){couta“,”b;} private: int a,b; }; void main() { A a1(2,5),a2(1,3); a1+=a2; a1.show(); } += a=a+p.a b=b+p.b * 作业:分别使用成员函数和友员函数编程序重载运算符“+”,使该运算符能实现两个字符串的连接。(可以使用strcat函数(连接字符串)) * #includeiostream.h #includestring.h class string { char str[50]; public: string(char s1[]) { strcpy(str,s1); } string operator +(string s1) { strcat(str,s1.str); return *this; } void display() { coutstrendl; } }; void main() { string s1(good),s2( morning); s1=s1+s2; s1.display(); } * 8.3 静态联编与动态联编 联编:指一个计算机程序自身彼此关联的过程,在这个联编过程中,需要确定程序中的操作调用(函数调用,即main函数)与执行该操作(函数,即被调用函数)的代码段之间的映射关系; 联编就是决定将main函数中的func()的函数调用映射到A中的func函数还是B中的func函数的过程。 class A { void func() {coutIts Aendl; } }; class B { void func() {coutIts Bendl; } }; int main() { func(); } * 8.3 静态联编与动态联编 按照联编所进行的阶段不同,可分为静态联编和动态联编; 静态联编(静态束定) 联编工作出现在编译阶段,在程序运行之前完成。由编译系统或操作系统装入程序计算函数的入口地址。 动态联编(动态束定) 联编工作在程序运行时执行,由程序自身计算函数的入口地址,用虚函数来实现。 动态联编和静态联编都是多态性的一种体现。它们是在不同的阶段对不同的实现进行不同的选择; * #includeiostream.h class Point { public: Point(double i, double j) {x=i; y=j;} double Area( ) const{ return 0.0;} private: do
文档评论(0)