练习07-类的继承
练习07-类的继承(2024级)
题量: 20 满分: 100
作答时间:05-10 19:43 至_06-15 19:43_
1.(单选题) 类有两种用法:一种是类的实例化,即生成类对象,参与系统的运行;另一种是通过( )派生新的类。
- A. 复用
- B. 继承
- C. 封装
- D. 引用
2.(单选题) 继承具有( ),即当基类也是一派生类时,底层的派生类也会自动继承间接基类的成员。
- A. 传递性
- B. 规律性
- C. 重复性
- D. 多样性
3.(单选题) 下列关于多继承二义性的描述中,错误的是( )。
- A. 一个派生类的多个基类中出现了同名成员时,派生类对同名成员的访问可能出现二义性
- B. 派生类有多个基类,这些基类又有一个共同的基类,派生类访问公共基类成员时可能出现二义性
- C. 解决二义性的方法是采用类名限定
- D. 基类和派生类中同时出现同名成员时,会产生二义性
4.(单选题) 下列关于虚基类的描述中,错误的是( )。
- A. 使用虚基类可以消除由多继承产生的二义性
- B. 构造派生类对象时,虚基类的构造函数只被调用一次
- C. 声明“class B : virtual public A”说明类B为虚基类
- D. 建立派生类对象时,首先调用虚基类的构造函数
5.(单选题) 建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数),这3种构造函数的调用顺序为( )。
- A. abc
- B. acb
- C. cab
- D. cba
6.(单选题) 在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是( )。
- A. 派生类的对象可以赋给基类的对象
- B. 派生类的对象可以初始化基类的引用
- C. 派生类的对象可以直接访问基类中的成员
- D. 派生类的对象的地址可以赋给指向基类的指针
7.(单选题) 派生类成员对其基类中的( )成员是不可访问的。
- A. 公有继承的私有
- B. 私有继承的公有
- C. 私有继承的保护
- D. 保护继承的保护
8.(单选题) 基类( )不允许外界访问,但允许派生类成员访问,这样既有一定隐藏能力,又能实现数据共享。
- A. 公有成员
- B. 私有成员
- C. 保护成员
- D. 私有成员函数
9.(单选题) 生成派生类对象时,派生类构造函数调用基类构造函数的条件是( )。
- A. 无需任何条件
- B. 基类中显式定义了构造函数
- C. 派生类中显式定义了构造函数
- D. 派生类构造函数明确调用了基类构造函数
10.(单选题) 下面程序的输出结果是( )。
#include<iostream>
using namespace std;
class Base{
int x;
public:
Base(int n=0):x(n){ cout<<n; }
int getX() const { return x; }
};
class Derived:public Base{
int y;
public:
Derived(int m, int n): y(m), Base(n){ cout<<m; }
Derived(int m): y(m){ cout<<m; }
};
int main(){
Derived d1(3), d2(5,7);
}
- B. 357
- C. 0375
- D. 0357
11.(单选题) 下面程序的输出结果是( )。
#include<iostream>
using namespace std;
class A { public: A() { cout<<”A”;} };
class B { public: B() { cout<<”B”;} };
class C: public A{
B b;
public: C() {cout<<”C”;}
};
int main( ) { C obj; }
- B. BAC
- C. ACB
- D. ABC
12.(单选题) 下面程序的输出结果是( )。
#include<iostream>
using namespace std;
class TestClass{
int a;
public:
TestClass(int x){ a=x;}
void show(){ cout<<a; }
};
class TestClass1:public TestClass{
int b;
public:
TestClass1(int i):TestClass(i+1),b(i){ }
void show(){ cout<<b; }
};
int main(){
TestClass b(5),*p;
TestClass1 d(1);
p=&d;
p->show();
}
- B. 1
- C. 0
- D. 2
13.(单选题) 有如下类声明:
在构造函数XB的下列定义中,正确的是( )。- A. XB::XB(int a,int B):x(a),y(B){ }
- B. XB::XB(int a,int B):XA(a),y(B){ }
- C. XB::XB(int a,int B):x(a),XB(B){ }
- D. XB::XB(int a,int B):XA(a),XB(B){ }
14.(单选题) 下面程序的输出结果是( )。
#include<iostream>
using namespace std;
class C1{ public: ~C1(){ cout<<1; } };
class C2: public C1{ public: ~C2(){ cout<<2; } };
int main(){
C2 cb2;
C1 *cb1;
}
- B. 21
- C. 211
- D. 12
15.(单选题) 下面程序的输出结果是( )。
#include<iostream>
using namespace std;
class ONE{
int c;
public:
ONE():c(0){ cout<<1;}
ONE(int n):c(n){ cout<<2;}
};
class TWO{
ONE one1,one2;
public:
TWO(int m):one2(m){cout<<3;}
};
int main(){ TWO t4(0); }
- B. 23
- C. 123
- D. 213
16.(单选题) 若已定义了类Vehicle,则下列派生类定义中,错误的是( )。
- A. class Car:Vehicle{…};
- B. class Car:public Car{…};
- C. class Car:public Vehicle{…};
- D. class Car:virtual public Vehicle{…};
17.(单选题) 有如下程序:
class Base{ public: void fun(){ cout<<'B'; } };
class Derived:public Base{ public: void fun(){ ( );cout<<'D';}};
int main(){ Derived d; D.fun(); return 0; }
- A. fun()
- B. Base.fun()
- C. Base::fun()
- D. Base->fun()
18.(单选题) 下面程序编译时有错误的是( )。
#include<iostream>
using namespace std;
class Media{
public:
void Name(){}
void Show(){}
protected:
int page;
};
class Book:private Media{
public:
void Print(){cout<<page<<endl;}
void Show() {Media::Show();} //①
};
int main(){
Book B;
B.Name(); //②
B.Print(); //③
B.Show(); //④
}
- B. 语句②
- C. 语句③
- D. 语句④
19.(单选题) 下面程序的输出结果是( )。
class Point{
int x,y;
public:
Point(int x1=0,int y1=0):x(x1),y(y1){ }
int get(){return x+y;}
};
class Circle{
Point center;
int radius;
public:
Circle(int cx,int cy,int r):center(cx,cy),radius(r){}
int get(){return center.get()+radius;}
};
int main(){
Circle c(3,4,5);
cout<<c.get();
}
- B. 7
- C. 9
- D. 12
20.(单选题) 下面程序的输出结果是( )。
#include<iostream>
using namespace std;
class AA { public: AA(){ cout<<'1'; } };
class BB: public AA
{ int k;
public: BB():k(0){ cout<<'2'; }
BB(int n):k(n){ cout<<'3'; }
};
int main(){ BB b(4), c; }
- B. 132
- C. 32
- D. 1412
练习07-类的继承(2024级)答案
正确答案列表:
- B
- A
- D
- C
- A
- C
- A
- C
- A
- C
- D
- D
- B
- B
- C
- B
- C
- B
- D
- A