使用VC6打开考生文件夹下的工程test29_1,此工程包含一个源程序文件test29_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为: A:no parameters B:int parameter A:no

admin2010-02-08  29

问题 使用VC6打开考生文件夹下的工程test29_1,此工程包含一个源程序文件test29_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:
   A:no parameters
   B:int parameter
   A:no parameters
   B:int parameter
   C:int parameter
   源程序文件test29_1.cpp清单如下;
       #include <iostream.h>
       class A
       {
       /*****************  found  *****************/
       private:
         A(){ cout<<"A:no parameters\n";}
         A(int a)  {cout<<"A:  int parameter\n";}
       };
       class B:public A
       {
       public:
        B(int a){cout<<"B:int Parameter\n";}
       };
       /*****************  found  *****************/
       class C:public B,public A
       {
       public:
       /*****************  found  *****************/
        C(int a) ::B(a) {cout<<"C:  int parameter\n"; )
       };
       void main ( )
       {
         B b(1);
         C c(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)派生类的构造函数,初始化基类的参数,调用基类的构造函数时,使用符号“:”,而不是“::”;
转载请注明原文地址:https://kaotiyun.com/show/gKID777K
0

最新回复(0)