只能放到构造函数初始化列表中赋值的类成员包括:
A.没有默认构造函数的类类型成员
B.常量成员
C.引用成员
D.指针成员
E.布尔类型成员
F.整型数组成员
A.没有默认构造函数的类类型成员
B.常量成员
C.引用成员
D.指针成员
E.布尔类型成员
F.整型数组成员
第1题
A.派生类构造函数中没有调用父类构造函数则没有对父类初始化
B.子类构造函数不能是内联函数
C.派生类构造函数中可以对父类数据成员赋值
D.构造函数的返回值为void类型
第2题
A.派生类不继承基类的构造函数和赋值运算
B.派生类的构造函数可以调用基类的构造函数
C.派生类的构造函数先于基类的构造函数执行
D.在建立派生类的实例对象时,必须调用基类的构造函数来初始化派生类对象中的基类成员
第3题
实验四 继承与派生 一、实验目的 1、学习定义和使用类的继承关系,定义派生类。 2、熟悉不同继承方式下对基类成员的访问控制。 3、学习利用虚基类解决二义性问题。 4、类的组合的练习。 5、通过上机练习搞清有关继承的基本知识和相关概念。 (1)基类和派生类的关系。 (2)派生类的定义和派生类构造函数的定义方法。 (3)基类成员在不同继承方式下在派生类中的访问权限。 6、通过上机搞清子类型和赋值兼容规则。真正理解“白狗就是狗”的概念。 7、了解多继承的特点和二义性出现的情况以及虚基类。 二、实验任务 1、定义一个基类Animal,有私有整型成员变量age。构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题?把age改为什么访问权限的就不会有问题了?编程试试看。分别在两个类的构造函数和析构函数中用cout输出不同的提示信息,在主函数中定义派生类的对象,观察构造函数和析构函数的执行情况。 2、定义一个Shape基类,包括整型变量的变量成员x,y,来表示位置,定义带参的构造函数可以初始化x,y,再由此定义出派生类;矩形类Rect和圆类Circle,Rect类增加宽和高w,h两个变量,Circle类增加半径r,分别定义两个派生类的构造函数,可以初始化各自变量(包括基类成员)。 3、编写一个在职研究生相关数据输入和显示程序。 请按下列要求编程。 (1)构造类研究生类数据有学号、姓名(char name[20])、性别(char sex)、年龄(int age)、班级号(int classNum)和期末总分(double score)。 有两个公有成员函数,一个是设置研究生的姓名、性别、年龄和班级号和期末总分的值:void SetValue(char* n, char _sex, int a, int classN, double s);另一个是显示输出函数void display();显示 研究生 姓名、性别、年龄 和班级号和期末总分 。 (2)在职人员数据有职工号、姓名(char name[20])、职称(int level)和部门(int department)。 有两个公有成员函数,一个是设置 在职人员的姓名、职称和部门的值函数:void SetValue(char* n, int level, int d);另一个是显示输出函数void display();显示在职人员的姓名、 职称和部门。 注*: 职称:从1到8 部门:1到3 (3)构造在职研究生类,该类是研究生类和在职人员的派生类。 有两个公有成员函数,一个是设置在职研究生的姓名、性别、年龄和班级号、期末总分、职称和部门的值:void SetValueExtra(char* n, char _sex, int a, int classN, double s, int level, int d);另一个是显示输出函数void display();显示 在职研究生的姓名、性别、年龄和班级号、期末总分、职称和部门 。 在主函数中,分别定义一个研究生和一个在职人员,给定相关数据,并再将输入数据输出显示在屏幕上。 再定义一个在职研究生对象,给定相关数据,并再将输入数据输出显示在屏幕上。 按上述要求编写出程序并上机调试。 附加题(加分): 4、P164题5-11 编写程序,定义机动车类Vehicle,包括的数据成员有出厂日期和售价,并定义成员函数可以设置这些数据成员,再定义Print()成员函数输出成员变量内容,然后定义Car类和Trunk类,分别扩展各自的内容,如Car类增加乘客数量,Trunk类增加载重吨数,并都可以通过构造函数初始化各自成员变量和其基类成员,最后都能输出相关信息。
第4题
(1)定义类Coordinate的保护数据成员x和y,它们都是int型的数据,代表二维坐标的横纵坐标值。请在注释“//**1 **”之后添加适当的语句。
(2)根据类Coordinate定义后的成员函数Display的实现,补充该函数在类Coordinate定义体内的声明,Display为二维坐标类的虚函数。请在注释“//**2**。”之后添加适当的语句。
(3)完成二维坐标类Coordinate的构造函数,将参数a和b分别赋值给数据成员x和y。请在注释“//**3**”之后添加适当的语句。
(4)根据ThreeDCoord类构造函数的声明,补充ThreeDCoord构造函数的实现,参数a和b通过调用基类的构造函数来初始化基类的数据成员x和y,c赋值给数据成员2。请在注释“//**4**”之后添加适当的语句。
输出结果如下;
[1,2]
[3,4,5]
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件tese9_3.cpp清单如下:
include<iostream.h>
class Coordinate
{protected:
//** 1 **
public:
Coordinate(int a=0, int b=0);
//** 2 **
};
Coordinate::Coordinate(int a, int b)
{
//** 3 **
}
void Coordinate::Display() const
{
cout << '[' << x << ", "<< y << ']' << end1;
}
class ThreeDCoord:public Coordinate
{
int z;
public:
ThreeDCoord(int a=0, int b=0, int c=0);
virtual void Display() const;
};
//** 4 **
void ThreeDCoord::Display() const
{
cout << '[' << x << ", "<< y << ", "<< z << ']' << end1;
}
void main ( )
{
Coordinate c(1, 2);
ThreeDCoord t(3, 4, 5);
c.Display ();
t.Display ();
}
第5题
1.1 创建管理员Manager类。 Manager类中包含以下内容: (1)私有成员变量(变量名自定义),分别保存管理员编号,姓名以及年龄; (2)可读写属性分别访问编号、姓名,只读属性访问年龄; (3)静态数据int count,此数据在创建管理员对象时用来统计当前管理员对象人数; (4)定义无参和有参构造函数设置管理员基本信息,其中无参函数将所有字段值用自己的学号,姓名,年龄等赋值,有参函数则用3个形参分别为字段赋值;并完成对象人数统计。 (5)定义公有方法void ShowInfo(),输出员工基本信息; (6)定义公有静态方法int GetCount(),返回当前员工人数。 (7)主函数中分别使用无参和有参构造创建该类对象,并分别显示对象信息,以及管理员对象总人数。 1.2 在1.1的基础上,继续创建Manager类的派生类SuperManager类 (1)添加保存超级管理员等级信息的私有数据int level; (2)添加带有4个参数的有参构造函数,用形参初始化编号、姓名、年龄和等级; (3)将1.1中Manager类的ShowInfo()改为虚方法; (4)在SuperManager类中重载基类ShowInfo()方法,输出派生类对象的所有信息; (5)在1.1的主函数中,添加创建该派生类对象的代码,并输出该对象所有信息。
第6题
第7题
第8题
(1)将类X的静态数据成员y初始化为1。请在注释“//**1**”之后添加适当的语句。
(2)完成类Y的构造函数Y(int i,int j)的定义,将参数i赋值给类Y的数据成员,X的对象a中的数据成员x,并且把参数j赋值给类X的数据成员y,请在注释“//**2**”之后添加适当的语句。
(3)完成类Y的成员函数void Display()的定义,将Y的数据成员,X的对象a中的数据成员x和类X的数据成员y按照“x=_,y=_”的形式显示出来(“_”代表一个数字),请在注释“//**3**”之后添加适当的语句。
输出结果如下:
x=5,y=l
x=6,y=9
x=5,y=9
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件test23_3.cpp清单如下:
include<iostream.h>
class X
{
friend class Y;
public:
void Set(int i) {x=i;}
void Display()
{
cout<<"x="<<x<<",";
cout<<"y="<<y<<endl;
}
private:
int x;
static int y;
};
class Y
{
public:
Y(int i, int j)
void Display();
private:
X a;
};
//**1**
Y::Y(int i, int j)
{
//**2**
}
void Y::Display()
{
//**3**
}
void main ( )
{
X b;
b.Set(5);
b.Display();
Y c(6,9);
c.Display();
b.Display();
}
第9题
【说明】
源程序文件vectorClass.cpp,其中定义了用于表示向量的类vector,但类vector的定义并不完整。请按要求完成下列操作,将类vector的定义补充完整,并给出输出结果。
1.补充类vector的构造函数,该函数有参数x和y,它们都是int型的数据,默认值都为 0。请使用参数列表的形式分别将类的数据成员a和b分别初始化为参数x和y的值。
2.完成类vector的成员函数input(int x,int y)的定义,将int型的参数x和y分别赋值给数据成员b和a。
3.完成类vector的友元函数friend double Multiply(vector &x,vector &y)的定义,先定义 double型的临时变量c,然后将参数对象x和对象y的数据成员a与b分别相乘再相加后赋值给c,最后返回c的值。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件vectorClass.cpp清单如下:
include < iostream. h >
class vector
{
int a;
int b;
public:
vector((1)):(2)
{
}
void input(int x, int y)
{ (3)
}
void output( )
{
cout<<'('<<a<<','<<b<<")" <<endl;
}
friend double Multiply(vector &x,vector &y);
};
double Multiply(vector &x,vector &y)
{
double c;
(4)
return c;
}
void main( )
{
vector x(10,20),y;
double d;
y. input(2,3)
d=Multiply(x,y);
cout<<d<<endl;
}
程序输出结果是:(5)。
第10题
实现一个简单的银行账户管理系统,如下图所示。1、程序功能如下: (1)当点击【创建储蓄卡账户】时,显示如下信息:其中卡号为随机生成的一个在100000到499999之间的一个值。(2)当点击【存款】,并在后面的文本框中输入存款金额。显示如下信息。(3)当点击【取款】,并在后面的文本框中输入取款金额。显示如下信息。(4)当点击【查询账户余额】。显示如下信息。(5)注意:在操作时要给出操作失败的提示及其原因。如下图:2. 程序的主体部份已经做好,请参见附件——Bank。 3. 请在Bank的代码视图中完成任务1:创建一个账户类,设计其成员变量和方法。 (1)主要的成员变量有卡号和余额,。 (2)主要的方法包括取款和存款以及对卡号和余额的获取。 (3)用构造函数对卡号和余额初始化,要求在构造函数中对卡号为随机生成的一个在100000到499999之间的一个值,余额统一定为0元。 4. 请在Bank的代码视图中完成任务2到任务5:实现系统功能。请在程序的相应位置写上适当的代码。 (1)任务2:实例化储蓄卡用户账户(new)。 (2)任务3:将accountNo赋值为创建的账户卡号。 (3)任务4:调用Account类的取款方法,并将取款结果赋值给message (4)任务5:调用Account类的存款方法,并将存款结果赋值给message (5)任务6:调用Account类的获取卡号和余额方法,并将账户卡号和余额赋值给message
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!