return0;
}
输出结果为:
111555
82.阅读程序,在下划横线处填写适当字句。
classA{
protected:
inta;
public:
A(){a=1;}
};
classB1:
publicA{
public:
B1(){}
};
classB2:
publicA{
public:
B2(){}
};
classC:
publicB1,publicB2//C类由直接基类B1和B2公有派生
{
public:
Derived(){}
voidInit(intb){
B1:
:
a=b;//b赋给基类B1的a成员
}
};
83.下面程序中有一处错误,请用下横线标出错误所在行并说明出错原因。
classbase{
public:
intx;
};
classOne:
publicbase{};
classTwo:
publicbase{};
classOT:
publicOne,publicTwo{
public:
intfunc();
};
voidmain(){
OTp;
p.base:
:
x;
}
出错行:
p.base:
:
x;
出错原因:
基类base不明确,因为One类和Two类都由基类base直接共有派生而来,在One类和Two类中都含有成员变量x
六、编程题
84.假定有一个类,名称为A,有1个字符型的数据成员c和1个整形数据成员x。
请写出该类的至少2个不同的构造函数形式。
1.A(charnewc,intnewx):
c(newc),x(newx){}//含参
2.A()//不含参
{
c=‘\0’;
x=0;
}
85.分别用new和malloc()分配一个有5个元素的整形数组,名称为a。
int*a=newint[5];
int*a=(int*)malloc(sizeof(int)*5);
86.完成一个求圆面积的小程序,要求如下:
①定义一个基类:
点类(Dot),包括x坐标和y坐标(公有或保护),从它派生一个圆类(Circle),增加私有数据成员r(半径);
②圆类的函数成员包括构造函数、输入圆心坐标及圆半径的函数(input)、计算并返回面积的函数(area);
③主函数中生成一个圆类对象crc,通过构造函数或input函数为数据成员赋值,圆心坐标为(6,6),半径为5。
使用对象crc的函数成员area计算面积,主函数输出结果。
#include
usingnamespacestd;
classDot
{
protected:
intx,y;
};
classCirle:
publicDot
{
public:
Cirle(){}
voidinput(intnewx,intnewy,intnewr)
{
x=newx;
y=newy;
r=newr;
}
doublearea()
{
return3.14159*r*r;
}
private:
intr;
};
voidmain()
{
Cirlecrc;
crc.input(6,6,5);
cout<}
87.编写类的定义,完成如下要求:
①定义一个People类,它的数据成员有年龄、姓名和性别;(字符串使用字符数组形式)
②以People类为基类,从中派生出学生类Student;
③在Student类中,新增一个数据成员为高数成绩;
④所有数据成员的输入由Student类构造函数实现;
⑤Student类有一成员函数为输出函数,用于输出所有数据成员;
⑥主函数用自己的信息定义一个学生对象,并输出该信息。
#include
usingnamespacestd;
classPeople
{
protected:
intage;
charsex;
charname[15];
};
classStudent:
publicPeople
{
public:
Student(intage1,charsex1,charname1[],intmathgrade1):
mathgrade(mathgrade1)
{
age=age1;
sex=sex1;
strcpy(name,name1);
}
voiddisplay()
{
cout<<"姓名:
"<"<"<"<}
private:
intmathgrade;
};
voidmain()
{
Studentstu(18,'f',"wang",80);
stu.display();
}