就业数据资源平台
当前位置:首页 > C++语言程序设计
2012年计算机二级C++练习题:改错题3

改错题
  使用VC6打开考生文件夹下的工程kt8_1,此工程包含一个源程序文件kt8_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
  f1functionofderive
  f2functionofbase
  f4functionofbase
  源程序文件kt8_1.cpp清单如下:
  #include
  classbase
  { public:
  /**********found**********/
  voidf1(){cout<<"f1functionofbase"<<ENDL;}< p=""></ENDL;}<>
  virtualvoidf2(){cout<<"f2functionofbase"<<ENDL;}< p=""></ENDL;}<>
  virtualvoidf3(){cout<<"f3functionofbase"<<ENDL;}< p=""></ENDL;}<>
  voidf4(){cout<<"f4functionofbase"<<="">
  /**********found**********/
  classderive::publicbase
  { voidf1(){cout<<"f1functionofderive"<<ENDL;}< p=""></ENDL;}<>
  voidf2(intx){cout<<"f2functionofderive"<<ENDL;}< p=""></ENDL;}<>
  voidf4(){cout<<"f4functionofderive"<<="">
  voidmain()
  { base*p;
  deriveobj2;
  /**********found**********/
  p=obj2;
  p->f1();
  p->f2();
  p->f4(); }
【参考答案】
  (1)将void f1(){ cout<<"f1 function of base"<<ENDL;}< p=""></ENDL;}<>
  改为:virtual void f1(){ cout<<"f1 function of base"<<ENDL;}< p=""></ENDL;}<>
  (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是一个指针类型的变量,给它的赋值应该是一个地址,即使用取地址操作符&。
就业数据资源平台