C++ 第13章 多态性(例子).docVIP

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

例13.5 在类中,用字符数组实现字符串。 #include iostream.h #includestring.h class Student { char Num[10]; //学号,注意:用数组实现 char Name[10]; //姓名,注意:用数组实现 int Score; //成绩 public: Student(char num[ ]=NULL, char name[ ]=NULL, int score=0) { if(num)strcpy(Num, num); else Num[0]=\0; if(name)strcpy(Name, name); else Name[0]=\0; Score=score; } void Show( ) { coutNum=Num\t Name=Name\t Score=Scoreendl; } }; void main( ) { Student stud1(01201, Mary, 88), stud2; stud2=stud1; //A stud1.Show( ); stud2.Show( ); } 程序的运行结果是: Num=01201 Name=Mary Score=88 Num=01201 Name=Mary Score=88 返回ppt讲稿 例13.7 += 运算符重载函数的返回值为void #include iostream.h class Complex { double Real, Image; public: Complex(double r=0, double i=0) { Real=r; Image=i; } void operator+=(const Complex c)//返回值为void型 { Real+=c.Real; Image+=c.Image; } void Show( ) { coutReal; if(Image0) cout+Imagei; //如果是正数,必须输出正号 else if(Image0) coutImagei; //如果是负数,自动输出负号 coutendl; } }; void main( ) { Complex c1(2, 3), c2(4, -2); coutc1=;c1.Show( ); coutc2=;c2.Show( ); c1+=c2; // A coutc1+=c2;c1=;c1.Show( ); } 运行结果如下: c1=2+3i c2=4-2i c1+=c2;c1=6+1i 程序中的A行被处理成 c1. operator+=(c2)。 如果有连续赋值的表达式,如c1+=c2+=c3, 编译器会处理成 c1. operator+=( c2. operator+=(c3) ), 注意划线部分是第一次赋值,表达式的结果是void类型,此时若欲做第二个赋值就不行了。 将上例中的operator+=( )重载函数改写成: Complex operator+=(const Complex c) // 返回值为本类类型的对象 { Real+=c.Real; Image+=c.Image; return *this; } 此时处理c1+=c2+=c3就没有问题了。 返回ppt讲稿 例13.8 对于字符串类,重载 = 运算符,返回对象自身的引用。就本例而言,可以不定义拷贝构造函数,程序能正确运行。 #include iostream.h #include string.h class String { char *Strp; public: String(char *s=0) // 构造函数 { if(s) { Strp=new char[strlen(s)+1]; strcpy(Strp, s); } else Strp=0; } String operator = (String s) // A赋值运算符重载函数 { if(Strp) delete [ ]Strp; if(s.Strp) { Strp=new char[strlen(s.Strp)+1]; strcpy(Strp, s.Strp); } else Strp=0; return * this; } ~String( ) // 析构函数 { if(Strp)

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档