1、17秋学期北理工面向对象程序设计在线作业2北理工面向对象程序设计在线作业试卷总分:100 得分:100一、 单选题 (共 38 道试题,共 76 分)31. 下列对引用的陈述中不正确的是()。A. 每一个引用都是其所引用对象的别名,因此必须初始化B. 形式上针对引用的操作实际上作用于它所引用的对象C. 一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行D. 不需要单独为引用分配存储空间 满分:2 分正确答案:C12. 下列类说明中,错误的是()。classSamplepublic:Sample(intval);/ASample();/Bprivate:inta=2.5;/CSam
2、ple();/D;A. /AB. /BC. /CD. /D 满分:2 分正确答案:C27. 已知函数f的原型是voidf(int*x,doubley);,变量i1、d2的定义为:inti1;doubled2;,则下列函数调用语句中,正确的是()。A. f(i1,d2)B. f(&i1,d2)C. f(i1,&d2)D. f(&i1,&d2) 满分:2 分正确答案:B29. 下列描述中,()不是面向对象系统包含的要素。A. 对象B. 类C. 继承D. 函数 满分:2 分正确答案:D10. 下列程序的输出结果是()。#includeclassVACpublic:intf()constreturn3
3、;intf()return5;intmain()VACv1;constVACv2;coutv1.f()v2.f();return0;A. 53B. 35C. 55D. 33 满分:2 分正确答案:A4. 下列情况中,不会调用复制构造函数的是()。A. 用一个对象去初始化同一类的另一个新对象时B. 将类的一个对象赋值给该类的另一个对象时C. 函数的形参是类的对象,调用函数用形参初始化实参时D. 函数的返回值是类的对象,函数执行返回调用时 满分:2 分正确答案:B4. 下列关于友元的描述中,错误的是()。A. 友元破坏了类的封装性B. 友元提高了程序的运行效率C. 友元可以在类外声明和定义D. 友
4、元能够访问类中的私有成员 满分:2 分正确答案:C33. 下列关于堆运算符的描述中,错误的是()。A. 使用堆运算符可以动态建立或删除对象B. 可以在使用new创建数组时,为每个数组元素指定初始值C. new运算符创建对象时要调用构造函数D. delete运算符可以作用于空指针 满分:2 分正确答案:B35. 多继承时对象的构造顺序中包含如下4步:所有非虚基类的构造函数按照它们被继承的顺序构造;所有虚基类的构造函数按照它们被继承的顺序构造;所有子对象的构造函数按照它们声明的顺序构造;派生类自己的构造函数体;这4个步骤的正确顺序是()。A. B. C. D. 满分:2 分正确答案:C17. 释放
5、一个类的对象时,系统自动调用()。A. 构造函数B. 析构函数C. 成员函数D. 友元函数 满分:2 分正确答案:B9. 下列描述中,正确的是()A. 虚函数是一个static 类型的成员函数B. 虚函数是一个非成员函数C. 抽象类是指具有纯虚函数的类D. 抽象类可以说明其对象 满分:2 分正确答案:C6. 假定p指向的字符串为”string”,若要输出这个字符串的地址值,则使用()。A. cout*pB. coutpC. coutpD. coutp 满分:2 分正确答案:D8. 定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为()。A. int*p=newint30B. i
6、nt*p=newint(30)C. int*p=new30int*p=new30D. *p=newint30 满分:2 分正确答案:A3. 在派生类中重新定义虚函数时,除了()方面,其他方面都必须与基类中相应的虚函数保持一致。A. 参数个数B. 参数类型C. 函数名称D. 函数体 满分:2 分正确答案:D30. 若函数原型为voidFun(intx,inty=6,intchar=a),则下列调用错误的是()。A. Fun(5)B. Fun(5, b)C. Fun(5,8)D. Fun(2,4, b) 满分:2 分正确答案:B16. 下列函数参数默认值定义错误的是()。A. Fun(int x=
7、0,int y=0)B. Fun(int x,int y)C. Fun(int x,int y=0)D. Fun(int x=0,int y) 满分:2 分正确答案:D17. 下列关于虚基类的描述中,错误的是()A. 设置虚基类的目的是消除二义性B. 虚基类子对象的初始化由最派生类完成C. 虚基类的构造函数可能调用多次D. 虚基类的构造函数先于非虚基类的构造函数执行 满分:2 分正确答案:C36. 下列关于静态数据成员特性的描述中,错误的是()。A. 说明静态数据成员时前边要加修饰符staticB. 静态数据成员要在类体外进行初始化C. 静态数据成员不是所有对象所共有的D. 引用静态数据成员时
8、,要在其名称前加和作用域运算符 满分:2 分正确答案:C13. 友元运算符obj1obj2被C+编译器解释为()。A. operator (obj1,obj2)B. (obj1,obj2)C. obj2.operator (obj1)D. obj1.operator (obj2) 满分:2 分正确答案:A35. 下列关于继承的描述中,错误的是()。A. 派生类对象不能访问基类的保护成员B. 派生类对基类成员的访问权限随着继承方式而改变C. 派生类成员可以访问基类的私有成员D. 派生类继承了基类的所有成员 满分:2 分正确答案:C19. 下列关于C+函数的描述中,正确的是()。A. 每个函数至少
9、要有一个参数B. 每个函数都必须返回一个值C. 函数在被调用之前必须先进行声明或定义D. 函数不能自己调用自己 满分:2 分正确答案:C26. 下列函数参数默认值定义错误的是()。A. Fun(int x=0,int y=0)B. Fun(int x,int y)C. Fun(int x,int y=0)D. Fun(int x=0,int y) 满分:2 分正确答案:D22. 一个类的构造函数为“B(intax,intbx):a(ax),b(bx)”,执行“Bx(1,2),y(3,4);x=y;”语句序列后x.a的值为_。A. 1B. 2C. 3D. 4 满分:2 分正确答案:A15. 若有
10、语句int*p=newint5;int*pi;则以下语句中,执行时会造成deletep语句的执行出错的是_。A. (*p)+;B. p+;C. pi = p;D. pi=p+3; 满分:2 分正确答案:A6. 执行下列程序后的输出结果是()。#includeintfun1(intx)return+x;intfun2(int&x)return+x;intmain()inta=0,b=0,c=0;c=fun1(a)+fun2(b);coutabcendl;return0;A. 002B. 012C. 102D. 112 满分:2 分正确答案:B19. 下列函数中,不是类的成员函数的是()。A. 构
11、造函数B. 友元函数C. 析构函数D. 复制构造函数 满分:2 分正确答案:B32. 下面是派生类声明的开始部分,正确的是()。A. class virtual B : public AB. virtual class B : public AC. class B : public A virtualD. class B : virtual public A 满分:2 分正确答案:D14. 下列程序的输出结果是()。#includeclassPartpublic:Part(intx=0):val(x)coutval;Part()coutval;private:intval;classWhole
12、public:Whole(intx,inty,intz=0):p2(x),p1(y),val(z)coutval;Whole()coutval;private:Partp1,pA. 123321B. 213312C. 213D. 123123 满分:2 分正确答案:B29. 下列关于函数重载的描述中,错误的是()。A. 函数重载就是用相同的函数名定义多个函数B. 重载函数的参数列表必须不同C. 重载函数的返回值类型必须不同D. 重载函数的参数可以带有默认值 满分:2 分正确答案:C29. 下列输出字符A的方法中,()是错误的。A. coutput(A);B. coutA;C. cout.put(A);D. char A=A;cout。A. 错误B. 正确 满分:2 分正确答案:B