使用VC6打开考生文件夹下的工程test24_1,此工程包含一个源程序文件test24_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为: 000 1 2-1 000 l 2-l 2 1 1 源程序

admin2010-02-08  29

问题 使用VC6打开考生文件夹下的工程test24_1,此工程包含一个源程序文件test24_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为:
   000
   1 2-1
   000
   l 2-l
   2 1 1
   源程序文件 test24_1.cpp 清单如下:
       #include<iostream.h>
       class A {
       /****************found*******************/
         int a=O;
       public:
         A(int aa=O):a(aa){}
       };
       class B
       {
         int a,b;
         const int c;
         A d;
       public:
       /****************found*******************/
         B(){}
       /****************found*******************/
         B (int aa,  int bb): d(aa+bb)
         {
                a=aa, b=bb;
         }
         void print()
         {
                cout<<a<<" "<<b<<" "<<c<<" "<<endl;
         }
       };
       void main ( )
       {
         B a,b(1,2);
         B x=a,y(b),z(2,1);
         a.print();
         b.print();
         x.print();
         y.print();
         z.print();
       }

选项

答案(1)错误:int a=0; 正确:int a; (2)错误;B(){} 正确:B():c(O){a=0;b=0;} (3)错误:B(int aa,int bb):d(aa+bb) 正确:B(int aa,int bb):c(aa-bb),d(aa+bb)

解析 (1)主要考查考生对于类的数据成员的初始化,在类的定义中不能对类的数据成员进行初始化,如果想要进行初始化应该使用构造函数和参数的默认值:
(2)主要考查考生对于含有常数据成员的类的构造函数的掌握,常数据成员必须在构造函数中进行初始化,而且应该使用参数列表的形式;
(3)主要考查考生在构造函数中对常数据成员的赋值的掌握,常数据成员的赋值应使用初始化列表进行。
转载请注明原文地址:https://kaotiyun.com/show/YKID777K
0

最新回复(0)