期中自测题1.定义一个处理日期的类TDate,它有3个私有数据成员:Month,Day,Year和若干个公有成员函数,并实现如下要求:①构造函数重载,可使用不同的构造函数来创建不同的对象;②构造函数设置缺省参数;③定义一个友元函数来打印日期;④定义一个非静态成员函数设置日期;1.#includeiostreamusingnamespacestd;classTDate{private:intyear,month,day;public:TDate(inty){year=1990;month=9;day=7;}TDate(inty=2009,intm=9,intd=7){year=y;month=m;day=d;}~TDate(){}friendvoidprint(TDate&x);//也可以用print(TDdatex)voidSetDate(intyy,intmm,intdd){year=yy;month=mm;day=dd;}};voidprint(TDate&x)//也可以用print(TDdatex){coutx.year年x.month月x.day日endl;}voidmain(){intY,M,D;TDatea;print(a);//调用的是有参构造函数,不是无参构造函数TDateb(2009,12,10);print(b);cout请输入日期:;cinYMD;b.SetDate(Y,M,D);print(b);}2.(正确的)#includeiostreamusingnamespacestd;classTDate{private:intyear,month,day;public:TDate(inty=1990,intm=9){year=y;month=m;day=7;}TDate(inty,intm,intd)//若上面已经定义了缺省构造函数,则在这里就不能在定义缺省构造函数了,否则上面的函数就没用了{year=y;month=m;day=d;}~TDate(){}friendvoidprint(TDatex);voidSetDate(intyy,intmm,intdd){year=yy;month=mm;day=dd;}};voidprint(TDatex){coutx.year年x.month月x.day日endl;}voidmain(){intY,M,D;TDatea(1990,9);print(a);TDateb(2009,12,10);print(b);cout请输入日期:;cinYMD;b.SetDate(Y,M,D);print(b);}3.#includeiostreamusingnamespacestd;classTDate{private:intyear,month,day;public:TDate(inty,intm)//无用,实际用下面的一个,仔细考虑缺省构造函数的特殊性。{year=y;month=m;day=7;}TDate(inty=2009,intm=9,intd=8){year=y;month=m;day=d;}~TDate(){}friendvoidprint(TDatex);voidSetDate(intyy,intmm,intdd){year=yy;month=mm;day=dd;}};voidprint(TDatex){coutx.year年x.month月x.day日endl;}voidmain(){intY,M,D;TDatea(1990,9);print(a);TDateb(2009,12,10);print(b);cout请输入日期:;cinYMD;b.SetDate(Y,M,D);print(b);}2.定义一个圆类(Circle),属性为半径(radius)、圆周长和面积,操作为输入半径,并计算周长、面积,输出半径、周长和面积。要求定义构造函数(以半径为参数,缺省值为0,周长和面积在构造函数中生成)和拷贝构造函数。1.#includeiostream#defineM3.14usingnamespacestd;classCircle{private:doubleradius,area,length;public:Circle(doubler=0){radius=r;area=M*r*r;length=2*M*r;cout面积是:area;cout周长是:length;}Circle(Circle&p){radius=p.radius;area=p.area;length=p.length;}};voidmain(){doubleR;cout请输入圆的半径:endl;cinR;Circlex(R);cout半径是:Rendl;}2.#includeiostreamusingnamespacestd;classCircle{private:doubleradius,area,length;public:Circle(doubler=0){doubleM=3.14;radius=r;area=M*radius*radius;length=2*M*radius;cout面积是:area;cout周长是:length;}Circle(Circle&p){radius=p.radius;area=p.area;length=p.length;}};voidmain(){doubleR;cout请输入圆的半径:endl;cinR;Circlex(R);cout半径是:Rendl;}3.设计一个字符串类,按照用户的要求动态的指定字符串的大小,要求写出构造函数,析构函数,拷贝构造函数,赋值函数,两个字符串连接函数。(都是正确的)1.#includeiostream#includestring.husingnamespacestd;classmystring{private:char*str;intlen;public:mystring();mystring(char*src);~mystring();mystring(constmystring&p);operator=(char*src);char*mystrcat(char*a,char*b);};mystring::mystring(){len=0;str=newchar(len+1);}mystring::mystring(char*src){len=strlen(src);str=newchar(len+1);strcpy(str,src);}mystring::mystring(constmystring&p){len=strlen(p.str);str=newchar(len+1);strcpy(str,p.str);}mystring::~mystring(){}mystring::operator=(char*src){len=strlen(src);str=newchar(len+1);strcpy(str,src);}char*mystring::mystrcat(char*a,char*b){returnstrcat(a,b);}voidmain(){mystringx;charp1[100]=sjkksjdkljsdk;charp2[50]=jsdkkjdk;coutx.mystrcat(p1,p2)endl;}2.#includeiostream#includestring.husingnamespacestd;classmystring{private:char*str;intlen;public:intputstring(char*b){returnputs(b);}char*getstring(char*c){returngets(c);}mystring();mystring(char*src);~mystring();mystring(constmystring&p);operator=(char*src);char*mystrcat(char*a,char*b);};mystring::mystring(){len=0;str=newchar(len+1);}mystring::mystring(char*src){len=strlen(src);str=newchar(len+1);strcpy(str,src);}mystring::mystring(constmystring&p){len=strlen(p.str);str=newchar(len+1);strcpy(str,p.str);}mystring::~mystring(){}mystring::operator=(char*src){len=strlen(src);str=newchar(len+1);strcpy(str,src);}char*mystring::mystrcat(char*a,char*b){returnstrcat(a,b);}voidmain(){mystringx;charp1[100],p2[50];cout请输入字符串p1:endl;x.getstring(p1);cout字符串p2为:endl;x.getstring(p2);coutx.mystrcat(p1,p2)endl;}4.设计一个用于人事管理“人员”类。由于考虑通用型,这里只抽象出所有类型人员都具有的属性:编号,性别,出生日期,身份证号等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数。拷贝构造函数,内联成员函数,带默认形参值的成员函数,类的组合。1./*4.设计一个用于人事管理“人员”类。由于考虑通用型,这里只抽象出所有类型人员都具有的属性:编号,性别,出生日期,身份证号等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数。拷贝构造函数,内联成员函数,带默认形参值的成员函数,类的组合。*/#includeiostream#includestring.husingnamespacestd;classDate{private:intmonth,day,year;public:Date(){}Date(inty,intm,intd){year=y;month=m;day=d;}~Date(){}voidSetDate(inty,intm,intd){year=y;month=m;day=d;}voidprintdate(){coutyear年month月day日endl;}};classRenshi:publicDate{private:char*sex,*ID;intnumber;Datep1;public:Renshi(char*Sex,char*id,intNum,Dateq1);~Renshi();Renshi(constRenshi&p);voidGetdata(char*Sex,char*id,intNum);inlinevoidshowdata();};Renshi::Renshi(char*Sex,char*id,intNum,Dateq1):p1(q1){strcpy(sex,Sex);strcpy(ID,id);number=Num;}Renshi::~Renshi(){deletesex;deleteID;}Renshi::Renshi(constRenshi&p){sex=p.sex;ID=p.ID;number=p.number;}voidRenshi: