题目导航
1.下列哪种C++语法形式不属于多态?( )
编号 | 选项 |
---|
A | 重载运算符 |
B | 重载函数 |
C | 对象多态 |
D | 不同函数中定义的同名局部变量 |
2.为类ABC定义重载运算符“+”,下列哪种定义形式是正确的?( )
编号 | 选项 |
---|
A | 定义为类ABC的函数成员:ABC operator +( ABC obj ) { … } |
B | 定义为类ABC的函数成员:ABC operator +( ABC obj1, ABC obj2 ) { … } |
C | 定义为类ABC的函数成员:void operator +( ) { … } |
D | 定义为类ABC的友元函数:ABC operator +( ABC obj ) { … } |
3.下列关于Liskov准则的描述中,错误的是( )。
编号 | 选项 |
---|
A | 派生类的对象可以初始化基类引用 |
B | 派生类的对象不能赋值给基类对象 |
C | 派生类对象的地址可以赋值给基类的对象指针 |
D | 应用Liskov准则,实际上是将派生类对象当作基类对象来使用 |
4.定义如下的基类A和派生类B:
class A
{
public:
virtual void fun( )
{ cout << “A :: fun( ) called”; }
};
class B : public A
{
public:
void fun( )
{ cout << “B :: fun( ) called”; }
};
执行下列代码:
A *p;
B bObj;
p = &bObj;
p->fun( );
通过基类指针p调用虚函数成员fun,将自动调用哪个函数?( )
编号 | 选项 |
---|
A | B::fun( ) |
B | 先调用A::fun( ),再调用B::fun( ) |
C | 语法错误 |
D | A::fun( ) |
5.下列关于对象多态性的描述中,错误的是( )。
编号 | 选项 |
---|
A | 通过基类引用访问派生类对象的虚函数成员,将自动调用基类的函数成员 |
B | 应用对象多态性的目的是为提高程序代码的可重用性 |
C | 通过基类对象指针访问派生类对象的虚函数成员,将自动调用派生类的函数成员 |
D | 应用对象多态性,实际上是用基类来代表派生类 |
6.下列关于虚函数的描述,错误的是( )。
编号 | 选项 |
---|
A | 只有虚函数成员才会在调用时表现出多态性 |
B | 类中的静态函数、构造函数、析构函数都可以是虚函数 |
C | 声明虚函数需使用关键字virtual |
D | 基类中声明的虚函数成员被继承到派生类后仍是虚函数 |
7.下列关于纯虚函数的描述,错误的是( )。
编号 | 选项 |
---|
A | 纯虚函数在实现之后就是一个正常的虚函数,会在调用时表现出多态性 |
B | 定义纯虚函数的目的是为了重用其算法代码 |
C | 含有纯虚函数成员的类被称为抽象类 |
D | 纯虚函数没有函数体 |
8.下列关于抽象类的描述,错误的是( )。
编号 | 选项 |
---|
A | 抽象类的派生类一定是抽象类 |
B | 不能用抽象类定义对象,即抽象类不能实例化 |
C | 可以用抽象类定义对象指针,指向其派生类对象 |
D | 可以用抽象类定义对象引用,引用其派生类对象 |
9.下列关于多继承的描述,错误的是( )。
编号 | 选项 |
---|
A | 多继承时,不同基类必须使用相同的继承方式 |
B | 派生类可以从多个基类继承,这就是多继承 |
C | 多继承会造成从不同基类所继承的成员之间互相重名 |
D | 多继承时,派生类不能继承基类的构造和析构函数 |
10.派生类从基类A和B各继承了一个数据成员x。如需访问派生类对象obj中从基类A继承来的成员x,下列哪种访问形式是正确的?( )
编号 | 选项 |
---|
A | obj.A.x |
B | obj.x |
C | obj.A::x |
D | obj.B::x |
@Power By Exercises-Manager