面向对象程序设计(专科)复习题二
一、单选题
1. 下列关于友元函数的说法,正确的是()。( ) A、提高程序的运行效率 B、增强类的封装性 C、实现数据的隐藏性 D、增加成员函数的种类
2. 下列关于在类中定义的静态数据成员的说法,正确的是( )( ) A、该类的每个对象都有一个静态数据成员 B、对象创建时产生 C、在类外进行初始化
D、既可以在类外初始化,也可以在类内初始化 3. 有如下类定义:
class Point{
int x_, y_; public:
Point():x_(0), y_(0){}
Point(int x, int y = 0):x_(x), y_(y){}
};
若执行语句: Point a(2), b[3], *c[4]; 则Point类的构造函数被调用的次数是():( ) A、2次 B、3次 C、4次 D、5次
4. 若类B公有继承自类A,则定义B类对象和撤销B类对象时,调用构造函数和析构函数的次序为( )。( ) A、A B; B A B、A B; A B C、B A; A B D、B A; A B
5. 在公有派生的前提下,下列说法错误的是( )。( )
A、在一个赋值语句中,等号的左边是一个基类对象时,右边可以是一个派生类对象 B、若B是A的派生类,且有默认的构造函数,则语句A &a = *new B C、在一个返回值为基类指针的函数中,可以返回一个派生类对象的地址
D、在调用一个形参类型为派生类引用的函数时,可以将一个基类对象作为实参
6. 类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针,则p->A::func()将()( ) A、调用类A中的函数func() B、调用类B中的函数func()
C、根据p所指的对象类型而确定调用类A中或类B中的函数func() D、既调用类A中函数,也调用类B中的函数 7. 下列不能作为类的成员的是()。( ) A、自身类对象的指针
B、自身类对象
C、自身类对象的引用 D、另一个类的对象
8. 下列关于虚析构函数 描述中,错误的是( )。( )
A、如果基类析构函数不是虚析构函数,则只会调用基类的析构函数,派生类的析构函数不被调用,此时派生类中申请的资源不被回收
B、如果基类析构函数为虚析构函数,则释放基类指针指向的对象时会调用基类及派生类析构函数,派生类对象中的所有资源被回收 C、虚析构函数的声明方式为~virtual 类名();
D、虚析构函数的声明形式也是在析构函数名前使用virtual关键字 9. 下列关于动态联编的描述中,错误的是( )。( ) A、动态联编是以虚函数为基础
B、动态联编是运行时确定所调用的函数代码的
C、动态联编调用函数操作是指向对象的指针或对象引用 D、动态联编是在编译时确定操作函数的 10. 类模板的实例化( )。( ) A、在编译时进行 B、属于动态联编 C、在运行时进行 D、在链接时进行 11. 用于声明重载运算符函数的关键字是()。( ) A、new B、this C、operator D、friend 12. 如果表达式++a中的“++”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为()( ) A、a.operator++(1) B、operator++(a) C、operator++(a,1) D、a.operator++() 13. 以下程序的输出结果是( )。 #include
int a = 7, b = 4, c = 6, d = 0;
cout << (d != a > b ? (a < c ? a : c) : (b)); return 0; }( )
A、4 B、6 C、7 D、0 14. 下列关于类的函数成员的描述中,错误的是( ) A、成员函数一定是内联函数 B、成员函数可以重载
C、成员函数可以设置参数的默认值
D、成员函数可以是静态的 15. 下列关于静态数据成员的描述中,正确的是()。 A、类的不同对象有不同的静态数据成员 B、静态数据成员不能通过类的对象访问 C、静态数据成员是类的所有对象共享的
D、类的每一个对象都有自己的静态数据成员 16. 已知类A是类B的友元,类B是类C的友元,则()。 A、类A一定是类C的友元 B、类C一定是类A的友元
C、类C的成员函数可以访问类B的对象的任何成员 D、类A的成员函数可以访问类B的对象的任何成员 17. 下列关于纯虚函数和抽象类的描述中,错误的是( )。 A、纯虚函数是一种特殊的虚函数,它没有具体的实现 B、抽象类是指具有纯虚函数的类
C、一个基类中声明有纯虚函数,该基类派生类一定不再是抽象类 D、抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出 18. 下列关于类的成员的描述中,正确的是( )
A、类定义中只能说明函数成员的函数头,不能定义函数体 B、类中的函数成员可以在类体中定义,也可以在类体之外定义 C、类中的函数成员在类体外定义时也必须与类声明在同一文件中 D、在类体之外定义的函数成员不能操作该类的私有数据成员 19. 分析代码: class A{
virtual void func1(); void func2(); };
class B: class A { void func1(){
cout << \ }
virtual void func2(){
cout << \ }
}; ( )
A、A中的func1 和 B中的func2 都是虚函数 B、A中的func1 和 B中的func2 都不是虚函数
C、A中的func2 是虚函数,B中的func1 不是虚函数 D、A中的func2 不是虚函数,B中的func1 是虚函数 20. 下列函数参数默认值定义,错误的是( )( ) A、Fun(int x, int y=0) B、Fun(int x = 100) C、Fun(int x = 0, int y)
D、Fun(int x = f(int a, int b)) () 得分