第 1 页:改错题 |
第 2 页:简单应用题 |
第 3 页:综合应用题 |
一、改错题
使用VC6打开考生文件夹下的工程kt10_1,此工程包含一个源程序文件kt10_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为:
classBase
classD1
classD2
classD3
finBase
源程序文件kt10_1.cpp清单如下:
#include
classBase
{ public:
Base(){cout<<"classBase"< voidf(){cout<<"finBase"< classD1:virtualpublicBase
{ public:
D1(){cout<<"classD1"< voidf(){cout<<"finD1"< /**********found**********/
classD2:publicBase
{ public:
D2(){cout<<"classD2"< /**********found**********/
classD3::publicD1,publicD2
{ public:
D3(){cout<<"classD3"< voidmain()
{ D3d;
/**********found**********/
d.f(); }
【参考答案】
(1)将class D2:public Base
改为:class D2:virtual public Base
(2)将class D3::public D1,public D2
改为:class D3:public D1,public D2
(3)将d.f();改为:d.Base::f();
【试题解析】
(1)主要考查对虚基类的理解,虚基类可以解决二义性的问题,其定义方式是在继承列表中使用virtual关键字,使用虚基类可以避免程序运行中对基类函数调用的不惟一;
(2)主要考查对类的定义方法的掌握,“::”为作用域符,此处应该使用“:”,因为后面是继承列表;
(3)主要考查对虚基类函数调用过程的理解,只有使用"::"限定才能访问基类函数,否则将会调用自身的函数,如果该类没有该函数的定义,则会自动调用其父类的该函数,所以必须使用“::”符号。
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |