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