2019年春季《面向对象程序设计》在线作业
一、单选题(共 50 道试题,共 100 分。)V 1.  在创建派生类对象时,构造函数的执行顺序是( )。
A. 对象成员构造函数、基类构造函数、派生类本身的构造函数;
B. 派生类本身的构造函数、基类构造函数、对象成员构造函数;
C. 基类构造函数、派生类本身的构造函数、对象成员构造函数;
D. 基类构造函数、对象成员构造函数、派生类本身的构造函数。
正确答案:D      满分:2  分
2.  下列对引用的陈述中错误的是( )。
A. 每一个引用都是其所引用对象的别名,因此必须初始化;
B. 形式上针对引用的操作实际上作用于它所引用的对象;
C. 一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行;
D. 不需要单独为引用分配存储空间。
正确答案:B      满分:2  分
3.  一个类的构造函数为 “B(int ax, int bx): a(ax), b(bx) {}”,执行 “B x(1,2),y(3,4);x=y;”语句序列后x.a的值为( )。
A. 1
B. 2
C. 3
D. 4
正确答案:C      满分:2  分
4.  下列说法不正确的是( )。
A. 在类中,成员的默认访问特性是私有的。
B. 类封装了数据和操作。
C. 类实质上是一种数据类型。
D. 在类的定义中,必须包含private、publi
E. protected三种存取方式对应得部分。
正确答案:D      满分:2  分
5.  基类A中有成员函数fn1()、fn2(),在派生类B中重载了成员函数fn1()(即重新定义了fn1()),但没有重载其成员函数fn2()。如果在派生类B中调用基类A的成员函数fn1()(不是B中重载的数fn1())和fn2(),则正确的方式是( )。
A. A::fn1()和fn2();
B. fn1()和A::fn2();
C. A::fn1()和A::fn2();
D. fn1()和fn2();
正确答案:A      满分:2  分
6.  下面是五条顺序出现的声明语句,非法的初始化语句是( )。
A. inti=–1;
B. constintic=i;
C. constint*pc=⁣
D. int*constcpi=⁣E、constint*constcpic=⁣
正确答案:D      满分:2  分
7.  下列关于私有继承的说法中正确的是( )。
A. 基类成员对派生类新定义的成员函数是不可见的;
B. 基类成员对派生类新定义的成员函数是可见的;
C. 只有基类成员中的公有成员对派生类新定义的成员函数是可见的;
D. 基类成员中的保护成员对派生类新定义的成员函数是可见的。
正确答案:D      满分:2  分
8.  用new运算符创建一个含有10个元素的一维整型数组的正确语句是( )。
A. intp=newint(10);
B. intp=newint[10];
C. int*p=newint[10];
D. int*p=newint(10);
正确答案:C      满分:2  分
9.  下面是四条顺序出现的声明语句,非法的初始化语句是( )。
A. inti=–1;
B. constintic=i;
C. constint*pc=⁣
D. int*constcpi=⁣
正确答案:D      满分:2  分
10.  对于下面的两条语句,正确的描述是( )。 MyObject a(2), b(a), c; c = b = a;
A. 拷贝构造函数执行了1次;
B. 赋值运算符重载函数执行了3次;
C. 拷贝构造函数函数执行了3次;
D. 赋值运算符重载函数执行了1次;
正确答案:A      满分:2  分
11.  对于类模板,其类型形参可以作为( )。
A. 成员函数的形参类型
B. 成员函数的返回类型
C. 数据成员的类型
D. 以上三种均可
正确答案:D      满分:2  分
12.  函数重载与函数模板的说法错误的是( )。
A. 当函数的函数体不同时,可以把函数设计为重载函数;
B. 当函数体相同,仅仅操作的数据类型不同时,可把函数设计为模板;
C. 重载函数和函数模板都是抽象的,都需实例化;
D. 函数模板有待于实例化为模板函数,重载函数可以直接引用。
正确答案:C      满分:2  分
13.  由C++目标文件连接而成的可执行文件的缺省扩展名为( )。
A. cpp
B. exe
C. obj
D. lik
正确答案:B      满分:2  分
14.  下述静态数据成员的特性中,( )是错误的。
A. 声明静态数据成员时前面要加修饰符static。
B. 静态数据成员要在类体外进行初始化。
C. 在程序中引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符。
D. 静态数据成员是本类中个别对象所共享的。
正确答案:D      满分:2  分
15.  以下关于函数模板的论述中,正确的是( )。
A. 一旦定义了函数模板,就不能再定义同名的重载函数;
B. 从同一个函数模板实例化后得到的多个模板函数属于函数重载;
C. 函数模板中只有一种参数;
D. 在定义函数模板时,template语句与函数模板定义语句之间可以有别的语句。
正确答案:B      满分:2  分
16.  带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化( )。
A. 与虚基类下面的派生类个数有关
B. 多次
C. 二次
D. 一次
正确答案:D      满分:2  分
17.  关于运行时多态的下列描述中,( )是错误的。
A. 运行时多态是以虚函数为基础的;
B. 运行时多态是在运行时确定所调用的函数代码的;
C. 用基类指针或引用所标识的派生类对象来操作虚函数才能实现运行时多态;
D. 运行时多态是在编译时确定操作函数的。
正确答案:D      满分:2  分
18.  下列关于类的访问控制机制说法错误的是( )。
A. 静态数据成员通常都定义为公有类型。
B. 一个对象的私有成员对于同类的另一个对象是可见的。
C. 友元机制破坏了类的封装性。
D. 基类的保护成员对派生类新定义的成员函数是可见的。
正确答案:A      满分:2  分
19.  下列程序段不会发生二义性的是( )。
A. intfun(doublep){...;}
B. intfun(floatp){...;}floatfun(floatp){...;}floatfun(unsignedp){...;}intx;intx;x=fun(0);x=fun(0);
C. intfun(inti,intj=2){...;}
D. intfun(inti=2,intj=2){...;}floatfun(inti){...;}intfun(int*p){...;}cout<<fun(5);cout<<fun(5);
正确答案:D      满分:2  分
20.  关于静态成员,正确的说法是( )。
A. 静态成员函数可以直接访问该类中的非静态成员
B. 非静态成员函数不能直接访问该类中的静态成员
C. 静态数据成员同其它数据成员一样通过构造函数进行初始化
D. 静态成员在任何对象创建之前就已经创建
正确答案:D      满分:2  分
21.  下面关于引用的说法错误的是( )。
A. 引用是被引用对象的别名
B. 对引用的修改就是对被引用对象的修改,反之亦然
C. 引用不一定立即初始化
D. 引用不能建立数组
正确答案:C      满分:2  分
22.  下列关于虚基类的说法错误的是( )。
A. 有引入虚基类的目的是解决二义性的问题;
B. 因为虚基类可被多个派生类继承,因此可以有多个副本以适应不同的派生类;
C. 若某个类被说明为虚基类,则被重复继承的该类成员在派生类对象中只有一个副本;
D. 在派生类对象创建时,要保证虚基类的构造函数只被调用一次。
正确答案:B      满分:2  分
23.  下列说法不正确的是( )。
A. 在类中不能对所定义的数据成员进行初始化。
B. 类的公有成员函数是类与外界的接口。
C. 同一个类的两个对象占用相同的内存空间。
D. 类实现数据隐藏。
正确答案:C      满分:2  分
24.  下列程序段不会发生二义性的是( )。
A. intfun(doublep){...;}
B. intfun(floatp){...;}floatfun(floatp){...;}floatfun(unsignedp){...;}intx;intx;x=fun(0);x=fun(0);
C. intfun(inti,intj=2){...;}
D. intfun(inti=2,intj=2){...;}floatfun(inti){...;}intfun(int*p){...;}cout<<fun(5);cout<<fun(5);构造函数可以被重载
正确答案:D      满分:2  分
25.  下列说法错误的是( )。
A. 在类中,成员的默认访问特性是私有的;
B. 类封装了数据和操作;
C. 类实质上是一种数据类型;
D. 在类的定义中,必须包含private、publi
E. protected三种存取方式对应得部分。
正确答案:D      满分:2  分
26.  下列说法错误的是( )。
A. 在类中不能对所定义的数据成员进行初始化;
B. 类的公有成员函数是类与外界的接口;
C. 同一个类的两个对象占用相同的内存空间;
D. 类实现数据隐藏。
正确答案:C      满分:2  分
27.  若有如下函数模板定义,则正确使用该函数模板的语句是( )。template<class type>void add(type a, type b, type &c){ c=a+b ; }
A. floatx,y,z;add(x,y,z) ;
B. intx,y,z;add(x,y,&z) ;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。