- 6
- 0
- 约5.31千字
- 约 5页
- 2018-03-15 发布于河南
- 举报
2006级C面向对象程序设计试题A-计算机学院2007年冬天定稿
2007-2008学年第1学期
2006级《C++面向对象程序设计》期末考试试题(A卷)
考试时间:2008年1月15日
班级 学号 姓名
本试卷满分100分;
请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰;
请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸
一并交上来。
单选题(共20分,每题2分)
1. 已知 (A) int num=A::f( ); (B) int num=a.f( );(C) int num= a.f( ) const; (D) const int num= a.f( );
2. 在实现函数 const A f(A obj) 时,下面的哪一个表达式不能作为函数的返回值? (A) 全局静态变量 (B) 局部静态变量(C) 函数参数obj对象 (D) 局部自动变量(auto变量)
3.下面关于new 和delete操作符的说法,哪个是不正确的: (A) 使用new操作符,可以动态分配全局堆中的内存资源。 (B) 用new[]申请的数组,应该用delete[] 释放。 (C) 执行语句A * p = new A成功后,调用了delete p;,则p的值为0。 (D) 执行语句A * p = new A[10];时,会调用10次构造函数。
下列哪种成员函数可以由const修饰? (A)无参构造函数 (B) 拷贝构造函数 (C) 自定义的转换函数 (D) 虚的析构函数
5.类D以public方式继承了类B,如下的哪个声明不能作为类D的成员?
(A) B* pB; (B) B aB; (C) D aD; (D) D* pD;
6.若类C的定义为class C:pubic A,private B{ public: int one,two; }; 则说法正确的是:
(A) one和two的空间分配及初始化的顺序,要根据类C的构造函数的初始化列表。
(B) A和B的构造顺序,要根据类C的构造函数的初始化列表。
(C) 若A、B、C中均无虚函数且都有非静态数据成员,
则sizeof(C)=sizeof(A)+sizeof(B)+2*sizeof(int).
(D) 类A和类B不能有公共的基类。
可以在类A的成员函数void f( ) const的函数体中使用的this指针类型是:
(A) A* (B) const A* (C) const A * const (D) A * const
8.判断类A的两个对象a1与a2(A)利用调试器,查看a1与a2各成员数据的值是否相等
(B)重载 == 运算符,用它来判断各成员数据的值是否相等。(C)判断这两个对象的地址值是否相等。
(D)比较创建时使用的构造函数的实参是否相同。
9.下面表达式中不可能出现的是:
(A) a[‘a’] (B) f(100)=0 (C) ~A(0) (D) Pint (0)
10.下面关于纯虚函数的说法,哪种是错误的?(A)纯虚函数一定是类的非静态成员函数。
(B)纯虚函数可以是带const修饰的常量成员函数。
(C)含有纯虚函数的类一定是抽象类。
(D)纯虚函数的返回值类型一定是void。
二、判断正误,对于你认为错误的论述,说明原因或举出反例。(共20分,每题2分)
类的所有成员函数都可以访问类中静态成员函数,但静态成员函数不能访问类的非常量成员函数,只能访问类的常量成员函数(用const 修饰的成员函数)。
在同一个类中,可以定义重载的成员函数 int f(int anInt=100); 和void f(int anInt); 。
私有继承中,基类中所有成员对派生类来说都是不可见的。
只要一个类存在一个公有的无参的构造函数,就一定可以用这个类创建对象。
类D以public方式继承类B,若在这两个类中以同样的方式分别声明了一个同名的整型成员变量x ,那么,为类D的对象分配内存空间时,不需要为类B中声明的x分配空间。
在任何情况下,都不可能通过构造函数的初始化列表对类的静态成员变量进行初始化。
使用形如 virtual class A:public class B { };的语法可以声明一个虚基类。
一个函数在基类中没有声明为虚函数,但在派生类中被重写时被声明为虚函数,那么基类中
原创力文档

文档评论(0)