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

改错题
  使用VC6打开考生文件夹下的工程kt14_1,此工程包含一个源程序文件kt14_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:
  A:noparameters
  B:intparameter
  A:noparameters
  B:intparameter
  C:intparameter
  源程序文件kt14_1.cpp清单如下:
  #include
  classA
  { /*****************found*****************/
  private:
  A(){cout<<"A:noparameters\n";}
  A(inta){cout<<"A:intparameter\n";} };
  classB:publicA
  { public:
  B(inta){cout<<"B:intparameter\n";} };
  /*****************found*****************/
  classC:publicB,publicA
  { public:
  /*****************found*****************/
  C(inta)::B(a){cout<<"C:intparameter\n";} };
  voidmain()
  { Bb(1);
  Cc(2); }
【参考答案】
  (1)将private:改为:public:
  (2)将class C:public B,public A改为:class C:public B
  (3)将C(int a)::B(a){cout<<"C: int parameter\n"; }
  改为:C(int a):B(a){cout<<"C: int parameter\n";}
【试题解析】
  (1)一个类的构造函数和析构函数可以由系统自动生成,也可以由用户提供,但构造函数和析构函数都必须是该类的公有成员函数,否则编译时将出现错误,不能被调用;
  (2)A已经是B的基类,C公有继承B,A也就成为了C的基类,根据程序的运行结果可知,C是要公有继承B;
  (3)派生类的构造函数,初始化基类的参数,调用基类的构造函数时,使用符号“:”,而不是“::”;
就业数据资源平台