第 1 页:改错题 |
第 2 页:简单应用题 |
第 3 页:综合应用题 |
一、改错题
使用VC6打开考生文件夹下的工程kt11_1,此工程包含一个源程序文件kt11_1.cpp,但该程序运行有问题,请改正函数中的错误,使该程序的输出结果为:
Valuesare:1,2and3
Pressanykeytocontinue
源程序文件kt11_1.cpp清单如下:
#include
classCommonBase
{ public:
intx; };
/*****************found*****************/
classDeriveCommonA::publicCommonBase
{ public:
inty; };
classDeriveCommonB:publicCommonBase
{ public:
intz; };
/*****************found*****************/
classOverlapping:publicDeriveCommonA;publicDeriveCommonB
{ public:
voidDisplay()
{ cout<<"Valuesare:"< intmain()
{ Overlappingov;
/*****************found*****************/
ov.x=1;
ov.y=2;
ov.z=3;
ov.Display();
return0; }
【试题解析】
(1)主要考查对派生类定义的理解,C++规定的继承格式是在类名的后面加冒号,之后是继承方式和继承类的名称,题目中错误的使用了作用域运算符;
(2)主要考查多继承的定义,多继承的格式基本上和单继承相同,不过在多个基类之间应该使用逗号分开,题目中错误的使用了分号,分号在C++中是结束标志;
(3)主要考查对派生类的对象访问的掌握,x是类CommonBase的成员,如果不加限制的访问就会产生二义性,编译程序不知道这个x是A类的,还是B类的,所以必须使用作用域限制符“::”,为了解决这个问题可以使用虚基类。
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |