欢迎来到天天文库
浏览记录
ID:40531631
大小:78.50 KB
页数:27页
时间:2019-08-04
《C++ 第13章 多态性(例子)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、例13.5在类中,用字符数组实现字符串。#include#includeclassStudent{charNum[10];//学号,注意:用数组实现charName[10];//姓名,注意:用数组实现intScore;//成绩public:Student(charnum[]=NULL,charname[]=NULL,intscore=0){if(num)strcpy(Num,num);elseNum[0]=' ';if(name)strcpy(Name,name);elseName[0]=' ';
2、Score=score;}voidShow(){cout<<"Num="<3、id#includeclassComplex{doubleReal,Image;public:Complex(doubler=0,doublei=0){Real=r;Image=i;}voidoperator+=(constComplex&c)//返回值为void型{Real+=c.Real;Image+=c.Image;}voidShow(){cout<0)cout<<'+'<4、;//如果是负数,自动输出负号cout<5、注意划线部分是第一次赋值,表达式的结果是void类型,此时若欲做第二个赋值就不行了。将上例中的operator+=()重载函数改写成:Complexoperator+=(constComplex&c)//返回值为本类类型的对象{Real+=c.Real;Image+=c.Image;return*this;}此时处理c1+=c2+=c3就没有问题了。返回ppt讲稿例13.8对于字符串类,重载=运算符,返回对象自身的引用。就本例而言,可以不定义拷贝构造函数,程序能正确运行。#include#include6、>classString{char*Strp;public:String(char*s=0)//构造函数{if(s){Strp=newchar[strlen(s)+1];strcpy(Strp,s);}elseStrp=0;}String&operator=(String&s)//A赋值运算符重载函数{if(Strp)delete[]Strp;if(s.Strp){Strp=newchar[strlen(s.Strp)+1];strcpy(Strp,s.Strp);}elseStrp=0;return*this;}~String()//析构函数7、{if(Strp)delete[]Strp;}voidShow(){cout<8、ring(String&s)//拷贝构造函数{if(s.Strp){Strp=newchar[strlen(s.Strp)+1];strcpy(Str
3、id#includeclassComplex{doubleReal,Image;public:Complex(doubler=0,doublei=0){Real=r;Image=i;}voidoperator+=(constComplex&c)//返回值为void型{Real+=c.Real;Image+=c.Image;}voidShow(){cout<0)cout<<'+'<4、;//如果是负数,自动输出负号cout<5、注意划线部分是第一次赋值,表达式的结果是void类型,此时若欲做第二个赋值就不行了。将上例中的operator+=()重载函数改写成:Complexoperator+=(constComplex&c)//返回值为本类类型的对象{Real+=c.Real;Image+=c.Image;return*this;}此时处理c1+=c2+=c3就没有问题了。返回ppt讲稿例13.8对于字符串类,重载=运算符,返回对象自身的引用。就本例而言,可以不定义拷贝构造函数,程序能正确运行。#include#include6、>classString{char*Strp;public:String(char*s=0)//构造函数{if(s){Strp=newchar[strlen(s)+1];strcpy(Strp,s);}elseStrp=0;}String&operator=(String&s)//A赋值运算符重载函数{if(Strp)delete[]Strp;if(s.Strp){Strp=newchar[strlen(s.Strp)+1];strcpy(Strp,s.Strp);}elseStrp=0;return*this;}~String()//析构函数7、{if(Strp)delete[]Strp;}voidShow(){cout<8、ring(String&s)//拷贝构造函数{if(s.Strp){Strp=newchar[strlen(s.Strp)+1];strcpy(Str
4、;//如果是负数,自动输出负号cout<5、注意划线部分是第一次赋值,表达式的结果是void类型,此时若欲做第二个赋值就不行了。将上例中的operator+=()重载函数改写成:Complexoperator+=(constComplex&c)//返回值为本类类型的对象{Real+=c.Real;Image+=c.Image;return*this;}此时处理c1+=c2+=c3就没有问题了。返回ppt讲稿例13.8对于字符串类,重载=运算符,返回对象自身的引用。就本例而言,可以不定义拷贝构造函数,程序能正确运行。#include#include6、>classString{char*Strp;public:String(char*s=0)//构造函数{if(s){Strp=newchar[strlen(s)+1];strcpy(Strp,s);}elseStrp=0;}String&operator=(String&s)//A赋值运算符重载函数{if(Strp)delete[]Strp;if(s.Strp){Strp=newchar[strlen(s.Strp)+1];strcpy(Strp,s.Strp);}elseStrp=0;return*this;}~String()//析构函数7、{if(Strp)delete[]Strp;}voidShow(){cout<8、ring(String&s)//拷贝构造函数{if(s.Strp){Strp=newchar[strlen(s.Strp)+1];strcpy(Str
5、注意划线部分是第一次赋值,表达式的结果是void类型,此时若欲做第二个赋值就不行了。将上例中的operator+=()重载函数改写成:Complexoperator+=(constComplex&c)//返回值为本类类型的对象{Real+=c.Real;Image+=c.Image;return*this;}此时处理c1+=c2+=c3就没有问题了。返回ppt讲稿例13.8对于字符串类,重载=运算符,返回对象自身的引用。就本例而言,可以不定义拷贝构造函数,程序能正确运行。#include#include6、>classString{char*Strp;public:String(char*s=0)//构造函数{if(s){Strp=newchar[strlen(s)+1];strcpy(Strp,s);}elseStrp=0;}String&operator=(String&s)//A赋值运算符重载函数{if(Strp)delete[]Strp;if(s.Strp){Strp=newchar[strlen(s.Strp)+1];strcpy(Strp,s.Strp);}elseStrp=0;return*this;}~String()//析构函数7、{if(Strp)delete[]Strp;}voidShow(){cout<8、ring(String&s)//拷贝构造函数{if(s.Strp){Strp=newchar[strlen(s.Strp)+1];strcpy(Str
6、>classString{char*Strp;public:String(char*s=0)//构造函数{if(s){Strp=newchar[strlen(s)+1];strcpy(Strp,s);}elseStrp=0;}String&operator=(String&s)//A赋值运算符重载函数{if(Strp)delete[]Strp;if(s.Strp){Strp=newchar[strlen(s.Strp)+1];strcpy(Strp,s.Strp);}elseStrp=0;return*this;}~String()//析构函数
7、{if(Strp)delete[]Strp;}voidShow(){cout<8、ring(String&s)//拷贝构造函数{if(s.Strp){Strp=newchar[strlen(s.Strp)+1];strcpy(Str
8、ring(String&s)//拷贝构造函数{if(s.Strp){Strp=newchar[strlen(s.Strp)+1];strcpy(Str
此文档下载收益归作者所有