C++习题3(继承和多态)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
2. 派生类的构造。派生类的构造总是由基类的初始化开始 的。填写代码,完成基类的初始化。并且要求屏幕输出 效果是:
#i nclude<iostream.h>
class A{
public:
A(int i){x=i; cout<<"CA:"<<x<<endl;}
〜A(){cout<v"DA"vve ndl;} private:
C)class B: public A virtualD)virtual class B: public A
13..实现运行时的多态性采用(D)
A)重载函数B)构造函数C)析构函数D)虚函数
14.若一个类中含有纯虚函数,则该类称为(D)
A)基类B)纯基类C)派生类
D)抽象类
15.假设A为抽象类,下列声明(B)是正确的
D)Base->fu n();
4.在保护继承的情况下,基类的成员(私有的除外)在派生 类中的访问权限(C)
A)受限制B)保持不变C)受保护D)不受保护
5•在哪种派生方式中,派生类可以访问基类中的protected
成员(B:
A)public禾口privateB)public、protected禾口private
9.下列说法中错误的是(S)。
A)保护继承时基类中的public成员在派生类中仍是public的
C)私有继承时基类中的public成员在派生类中是private的
D)保护继承时基类中的public成员在派生类中是protected的
10下面叙述错误的是(C)。
A)派生类可以使用private派生
B)对基类成员的访问必须是无二义性的
一、选择题
1.在C++中,类与类之间的继承关系具有(C)
A)自反性B)对称性C)传递性D)反对称性
2.在公有继承的情况下,基类的成员(私有的除外)在派生 类中的访问权限(B)
A)受限制B)保持不变C)受保护D)不受保护
3.按解释中的要求在下列程序划线处填入的正确语句是:
(C)
#in elude <iostream.h>
6.指向基类的对象的指针变量也可以指向—公有派生类的对象。
二、程序题
1.继承的工作方式,完成以下代码。要求: (1)处继承方 式为共有继承public, (2)处填写基类的ai,(3)处填写 派生类的bi, (4)对象b的数据成员有哪些?ai,bi
#i nclude<iostream.h>
#i ncludevstri ng.h>
class A{
public:
A(){ai=1;}
protected:
int ai;
};
class B:A{
public:
B(){bi=2;}
voiddisplay(){cout<<(2)<<
(3)<<e ndl;}
private:
int bi;
};
int mai n()
{
B b;
b.display();
class Base{
public:
void fun(){cout<v"Base::fun"v<endl;}
};
class Derived:public Base{
public:
void fun ()
{〃在此空格处调用基类的函
数fun()
cout<<"Derived::fun"<<endl;}
};
A)fun();B)Base.fun();C)Base::fun();
C) virtual void fun ();D) virtual void fun(){};
18.在下面四个选项中,(A)是用来声明虚函数的。
A)virtual B)public C)usi ng D)false
19.实现运行时的多态性要使用(D)。
A)重载函数B)构造函数
C)析构函数D)虚函数
20.关于虚函数的描述中,正确的是(D)。
A)虚函数是一个静态成员函数
B)虚函数是一个非成员函数
£)虚函数既可以在函数说明时定义,也可以在函数实现时 定乂
D)派生类的虚函数与基类中对应的虚函数具有相同的参 数个数和类型
二、填空题:
1■派生类对基类的继承有三种方式:_public_、
_protected_和__private_。
2■如果类Alpha继承了类Beta,则类Alpha称为__派生
A) A fun(int);B) A *p;C) int fun(A);
D) A Obj;
16.在派生类中,重载一个虚函数时,要求函数名、参数的 个数、参数的类型、参数的顺序和函数的返回值(B)
A)不同B)相同C)相容
D)部分相同
17.下面函数原型声明中,(C)声明了fun为普通虚函数
A) void fun()=0;B) virtual void fun( )=0;
D) public成员禾口protected成员
8下面叙述错误的是(S)。
A)基类的protected成员在派生类中仍然是protected的
B)基类的protected成员在public派生类中仍然是protected的
C)基类的protected成员在private派生类中是private的
d)基类的protected成员不能被派生类的对象访问
—类,类Beta称为—基一—类。
3.设置虚基类的目的是 为了消除二义性,可通过_virtual
标识虚基类。
4.类继承中,缺省的继承方式是—private。
5.当用protected继承从基类派生 宀个类时,基类的public
成员成为派生类的protected员,protected成
员成为派生类的protected成员。
C)基类成员的访问能力在派生类中维持不变
D)赋值兼容规则也适用于多继承的组合
11派生类的构造函数的成员初始化列表中,不能包含(C)。
A)基类的构造函数B)派生类中子对象
的初始化
12.下列虚基类的声明中,正确的是: (Fra Baidu bibliotek)
A)class virtual B: public AB)class B: virtual public A
C)protected和privateD)仅protected
6.当一个派生类仅有protected继承一个基类时,基类中的所 有公有成员成为派生类的(C)
A) public成员B) private成员C) protected成员
D)友元
7.不论派生类以何种方法继承基类,都不能使用基类的(B)
A) public成员B) private成员C) protected成员
2. 派生类的构造。派生类的构造总是由基类的初始化开始 的。填写代码,完成基类的初始化。并且要求屏幕输出 效果是:
#i nclude<iostream.h>
class A{
public:
A(int i){x=i; cout<<"CA:"<<x<<endl;}
〜A(){cout<v"DA"vve ndl;} private:
C)class B: public A virtualD)virtual class B: public A
13..实现运行时的多态性采用(D)
A)重载函数B)构造函数C)析构函数D)虚函数
14.若一个类中含有纯虚函数,则该类称为(D)
A)基类B)纯基类C)派生类
D)抽象类
15.假设A为抽象类,下列声明(B)是正确的
D)Base->fu n();
4.在保护继承的情况下,基类的成员(私有的除外)在派生 类中的访问权限(C)
A)受限制B)保持不变C)受保护D)不受保护
5•在哪种派生方式中,派生类可以访问基类中的protected
成员(B:
A)public禾口privateB)public、protected禾口private
9.下列说法中错误的是(S)。
A)保护继承时基类中的public成员在派生类中仍是public的
C)私有继承时基类中的public成员在派生类中是private的
D)保护继承时基类中的public成员在派生类中是protected的
10下面叙述错误的是(C)。
A)派生类可以使用private派生
B)对基类成员的访问必须是无二义性的
一、选择题
1.在C++中,类与类之间的继承关系具有(C)
A)自反性B)对称性C)传递性D)反对称性
2.在公有继承的情况下,基类的成员(私有的除外)在派生 类中的访问权限(B)
A)受限制B)保持不变C)受保护D)不受保护
3.按解释中的要求在下列程序划线处填入的正确语句是:
(C)
#in elude <iostream.h>
6.指向基类的对象的指针变量也可以指向—公有派生类的对象。
二、程序题
1.继承的工作方式,完成以下代码。要求: (1)处继承方 式为共有继承public, (2)处填写基类的ai,(3)处填写 派生类的bi, (4)对象b的数据成员有哪些?ai,bi
#i nclude<iostream.h>
#i ncludevstri ng.h>
class A{
public:
A(){ai=1;}
protected:
int ai;
};
class B:A{
public:
B(){bi=2;}
voiddisplay(){cout<<(2)<<
(3)<<e ndl;}
private:
int bi;
};
int mai n()
{
B b;
b.display();
class Base{
public:
void fun(){cout<v"Base::fun"v<endl;}
};
class Derived:public Base{
public:
void fun ()
{〃在此空格处调用基类的函
数fun()
cout<<"Derived::fun"<<endl;}
};
A)fun();B)Base.fun();C)Base::fun();
C) virtual void fun ();D) virtual void fun(){};
18.在下面四个选项中,(A)是用来声明虚函数的。
A)virtual B)public C)usi ng D)false
19.实现运行时的多态性要使用(D)。
A)重载函数B)构造函数
C)析构函数D)虚函数
20.关于虚函数的描述中,正确的是(D)。
A)虚函数是一个静态成员函数
B)虚函数是一个非成员函数
£)虚函数既可以在函数说明时定义,也可以在函数实现时 定乂
D)派生类的虚函数与基类中对应的虚函数具有相同的参 数个数和类型
二、填空题:
1■派生类对基类的继承有三种方式:_public_、
_protected_和__private_。
2■如果类Alpha继承了类Beta,则类Alpha称为__派生
A) A fun(int);B) A *p;C) int fun(A);
D) A Obj;
16.在派生类中,重载一个虚函数时,要求函数名、参数的 个数、参数的类型、参数的顺序和函数的返回值(B)
A)不同B)相同C)相容
D)部分相同
17.下面函数原型声明中,(C)声明了fun为普通虚函数
A) void fun()=0;B) virtual void fun( )=0;
D) public成员禾口protected成员
8下面叙述错误的是(S)。
A)基类的protected成员在派生类中仍然是protected的
B)基类的protected成员在public派生类中仍然是protected的
C)基类的protected成员在private派生类中是private的
d)基类的protected成员不能被派生类的对象访问
—类,类Beta称为—基一—类。
3.设置虚基类的目的是 为了消除二义性,可通过_virtual
标识虚基类。
4.类继承中,缺省的继承方式是—private。
5.当用protected继承从基类派生 宀个类时,基类的public
成员成为派生类的protected员,protected成
员成为派生类的protected成员。
C)基类成员的访问能力在派生类中维持不变
D)赋值兼容规则也适用于多继承的组合
11派生类的构造函数的成员初始化列表中,不能包含(C)。
A)基类的构造函数B)派生类中子对象
的初始化
12.下列虚基类的声明中,正确的是: (Fra Baidu bibliotek)
A)class virtual B: public AB)class B: virtual public A
C)protected和privateD)仅protected
6.当一个派生类仅有protected继承一个基类时,基类中的所 有公有成员成为派生类的(C)
A) public成员B) private成员C) protected成员
D)友元
7.不论派生类以何种方法继承基类,都不能使用基类的(B)
A) public成员B) private成员C) protected成员