使用VC6打开考生文件夹下的工程kt8_1,此工程包含一个源程序文件kt8_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
f1functionofderive
f2functionofbase
f4functionofbase
源程序文件kt8_1.cpp清单如下:
#include
classbase
{ public:
/**********found**********/
voidf1(){cout<<"f1functionofbase"< virtualvoidf2(){cout<<"f2functionofbase"< virtualvoidf3(){cout<<"f3functionofbase"< voidf4(){cout<<"f4functionofbase"<<> /**********found**********/ classderive::publicbase { voidf1(){cout<<"f1functionofderive"< voidf2(intx){cout<<"f2functionofderive"< voidf4(){cout<<"f4functionofderive"<<> voidmain() { base*p; deriveobj2; /**********found**********/ p=obj2; p->f1(); p->f2(); p->f4(); } 【参考答案】 (1)将void f1(){ cout<<"f1 function of base"< 改为:virtual void f1(){ cout<<"f1 function of base"< (2)将class derive::public base 改为:class derive:public base (3)将p=obj2; 改为:p=&obj2; 【试题解析】 (1)主要考查对虚函数的深刻理解,虚函数是动态联编的基础,也是实现多态性的重要方法,它可以根据不同的情况动态的选择执行哪一个函数。在派生类中实现虚函数应该满足与基类的同名函数完全相同,并且使用关键字virtual修饰,本题中由输出结果中的f1 function of derive可知,必须将基类base的成员函数f1()定义为虚函数; (2)主要考查对派生类定义格式的掌握,应该使用“:”后面是继承列表,而“::”是作用域符; (3)主要考查类对象的定义与使用,p是一个指针类型的变量,给它的赋值应该是一个地址,即使用取地址操作符&。
① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;
② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。