试题B答案

  • 格式:doc
  • 大小:36.00 KB
  • 文档页数:3

甘肃农业大学信息科学技术学院200 ~ 200 学年第学期
《面向对象程序设计》课程
试卷(B)参考答案及评分标准
开课二级学院: _____ ,学生专业:,教师:
一、填空题(每空1分,共20分)。

1.状态、操作/方法
2.参数个数、参数类型
3.私有/private
4.this指针
5.解决二义性问题,最派生类
6.动态、静态
7.无/不需要、类成员函数
8.纯虚函数、基类
9.可见不可见不可见
不可见不可见不可见
二、选择题(每题2分,共20分)。

1、D
2、C
3、B
4、C
5、C
6、A
7、A
8、A
9、C 10、B
三、改错题(共20分)。

1.错误改正
Line12 MyClass obj1(0); (实参可以为任意值)
Line14 obj1.SetMember(5);
Line15 obj2.SetMember(10);
2.Line4出错。

原因:构造函数中不能调用纯虚函数。

3.程序运行时将出现错误。

原因:Line18将调用拷贝初始化构造函数,由于类中没有定义拷贝初始化构造函数,因此编译器会自动生成一个缺省拷贝初始化构造函数,但由于类成员是一个指针,缺省拷
《》课程试卷参考答案及评分标准第 1 页共 3 页贝初始化构造函数构造的新对象中的指针将与原对象指向同一个变量,结果是在对象消失进行析构时,该变量会被删除两次。

程序改正:
为Test类定义一个拷贝初始化构造函数。

Test(const Test& t)
{
ptr=new int(*t.ptr);
}
四、简答题(每题10分,共30分)。

1、(1)、支配规则:
类X中的名字N支配类Y中同名的名字N是指类X以类Y为它的一个基类。

如果一个名字支配另外一个名字,则二者之间不存在二义性。

当选择该名字时,使用支配者的名字。

(2)、S1、S3有二义性,S2无二义性。

原因:
S1:二义性检查在访问控制权限之前进行。

S2:符合支配规则。

S1:二义性检查在类型检查之前进行。

2、6/4=1
Exception of dividing zero.
It is OK.
3、A's cons.a
B's cons.d
C's cons.b
A's cons.e
D's cons.f
D's des.
A's des.
C's des.
B's des.
A's des.
《》课程试卷参考答案及评分标准第 2 页共 3 页
五、程序填充(每空2分,共10分)。

1、virtual void Print()=0;
2、Derive1(int i):Base(i) {}
3、public:
Derive2(int i):Base(i) {}
void Print()
{
cout<<"Derive2's Print() called."<<endl;
}
4、Base *obj
5、输出结果:
Derive1 *d1=new Derive1(1);
Derive2 *d2=new Derive2(2);
《》课程试卷参考答案及评分标准第 2 页共 3 页。