使用VC6打开考生文件夹下的工程test30_3。此工程包含一个test30_3.cpp,其中定义了类A、A1和A2,其中A1类由 A类公有派生,A2类由A1类公有派生。上述三个类的定义并不完整,请按要求完成下列操作,将程序补充完整。 (1)定义类A

admin2010-02-08  34

问题 使用VC6打开考生文件夹下的工程test30_3。此工程包含一个test30_3.cpp,其中定义了类A、A1和A2,其中A1类由 A类公有派生,A2类由A1类公有派生。上述三个类的定义并不完整,请按要求完成下列操作,将程序补充完整。
   (1)定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中请将x赋值给数据成员a。请在注释“//** 1**”之后添加适当的语句。
   (2)定义类A1的构造函数,该构造函数有两个整型的参数x和y,在构造函数中请将x赋值给数据成员b,将y作为基类A构造函数的参数值传入。请在注释“//**2**”之后添加适当的语句。
   (3)定义类A2的构造函数,该构造函数有三个整型的参数x,y和2,在构造函数中请将x赋值给数据成员c,将y和z分别赋值给基类A1构造函数的参数x和y。请在注释“//**3**”之后添加适当的语句。
   (4)完成类A2的成员函数show的定义,该函数调用基类成员函数,输出基类数据成员a和b及类A2自身的数据成员c的值,上述三个值在输出时以空格隔开。请在注释“//**4**”之后添加适当的语句。
   注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
   程序输出结果如下:
   9
   6
   962
   源程序文件test30_3.cpp清单如下:
       #include <iostream.h>
       class A
       {
         int a;
       public:
         //** 1 **
         int geta()  {return a;}
       };
       class A1:public A
       {
         int b;
       public:
         //** 2 **
         int getb()  {return b;}
       };
       class A2:public A1
       {
         int c;
       public:
       //** 3 **
       void show()
       {
           //** 4 **
          }
       };
       void main()
       {
         A2 a(2,6,9);
         cout<<a.geta ( ) <<end1;
         cout<<a, getb ( ) <<end1;
         a. show( );
       }

选项

答案(1) A(int x){a=x;} (2) A1(int x,int y):A(y){b=x;} (3) A2(int x,int y,int z):A1(y,x){c=x;} (4) cout<<geta()<<" "<<getb()<<" "; cout<<c<<"\n";

解析 本题主要考查考生对继承和派生的掌握程度,涉及派生类构造函数的定义、基类成员函数的访问等内容。派生类的构造函数的格式请牢记,另外派生类构造函数及析构函数的执行顺序也是需要掌握的。
转载请注明原文地址:https://kaotiyun.com/show/iKID777K
0

最新回复(0)