选择题:
1、继承具有( B ),即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。
A、规律性 B、传递性 C、重复性 D、多样性
2、下列描述中哪个是正确的?( B )。
A、私有派生的子类无法访问父类的成员
B、类A的私有派生子类的派生类C无法初始化其祖先类A对象的属性,因为类A的成员对类C是不可访问的
C、私有派生类不能作为基类派生子类
D、私有派生类的所有子孙类将无法继续继承该类的成员
3、可以用用P.a的形式访问派生类对象P的基类成员a,其中a是( D )。
A、私有继承的公有成员 B、公有继承的私有成员
C、公有继承的保护成员 D、公有继承的公有成员
4、在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( C )。
A、派生类的对象可以赋给基类的对象
B、派生类的对象可以初始化基类的引用
C、派生类的对象可以直接访问基类中的成员
D、派生类的对象的地址可以赋给指向基类的指针
5、在C++语言类体系中,不能被派生类继承的有( B )。
A、转换函数 B、构造函数 C、虚函数 D、静态成员函数
6、下列关于多态性的描述,错误的是( C )。
A、C++语言的多态性分为编译时的多态性和运行时的多态性
B、编译时的多态性可通过函数重载实现
C、运行时的多态性可通过模板和虚函数实现
D、实现运行时多态性的机制称为动态绑定
7、下列关于虚基类的描述,错误的是( B )。
A、设置虚基类的目的是为了消除二义性
B、虚基类的构造函数在非虚基类之后调用
C、若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用
D、若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数
8、下面关于虚函数的描述,错误的是( B )。
A、在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数
B、基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数
C、虚函数可以是另一个类的友元函数,但不能是静态成员函数
D、基类中说明的纯虚函数在其任何派生类中都必须实现
9、下面关于c++语言的描述错误的是( B )。
A、C++语言支持数据封装 B、C++语言中引入友元没有破坏封装性
C、C++语言允许函数名和运算符重载 D、C++语言支持动态联编
10、 试题内容:对于类定义, 下面正确的叙述是( C )。
class A{
public:
virtualvoid funcl(){}
void func2(){} };
class B:public A
{ public:
void funcl(){cout<<”class B func 1”<<endl;}
virtual void func2(){cout<<”class B func 2”<<endl;}
};
A、A::func2()和B::funcl()都是虚函数
B、A::func2()和B::funcl()都不是虚函数
C、B::funcl()是虚函数,而A::func2()不是虚函数
D、B::funcl()不是虚函数,而A::fune2()是虚函数
填空题:
1、派生类构造函数的执行顺序是先执行( 基类 )的构造函数,再执行( 派生类 )的构造函数。
2、一个派生类同时继承多个基类,叫做( 多重继承 )。
3、继承的方式有公有继承、( 私有继承 )和( 保护继承 )3种。
4、若类B是类A的私有派生类,类C是类B的公有派生类,则类C的对象( 不能 )直接访问类A的公有成员。
5、从系统实现的角度看,多态性分为两类:(静态多态性)和(动态多态性)。
判断题:
1、判断:派生类对象可以直接赋值给基类对象。( √ )
2、判断:基类对象指针可以直接赋值给派生类对象指针。( × )