使用VC6打开考生文件夹下的工程test3_1,此工程包含一个源程序文件test3_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下: A:a=5 display1:a=6 display2:a=5 源程序文件test3_1

admin2012-05-11  6

问题 使用VC6打开考生文件夹下的工程test3_1,此工程包含一个源程序文件test3_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
A:a=5
display1:a=6
display2:a=5
源程序文件test3_1.cpp清单如下:
   #include<iostream.h>
   Class A
   {
   public:
   /**********found**********/
     A (){}
     void  printa(){cout<<"A:a="<<a<<endl;}
   private:
     int a;
   /***********found**********/
     class B;
   };
   class B
   {
   public:
   /*********found**********/
     void display1(A t)
     {
       (*t).a++;cout<<"display1:a="<<(*t).a<<endl;
     }
    void  display2(A t)
     {
        t.a--;cout<<"display2:a="<<t.a<<end1;
     }
   };
   void main()
   {
    A obj1;
    B obj2;
    obj1.printa();
    obj2.display1(&obj1);
    obj2.display2(obi1);
   }

选项

答案(1)错误:A(){} 正确:A(){a=5;} (2)错误:class B; 正确:friend class B; (3)错误:void display1(At) 正确:void display1(A*t)

解析 (1)主要考查考生对于缺省构造函数的理解,由主函数的obj1.printa()可知原缺省构造函数定义不完整;
(2)主要考查考生对于友元的理解,如果类B不是类A的友元,则类B不能直接调用类A的私有成员,只有友元类和友元函数可以访问类的所有成员;
(3)主要考查考生对于指针的概念掌握,由函数体中的使用可以看出,这里的定义应该是对象指针,指针的定义是使用*加上变量名。
转载请注明原文地址:https://kaotiyun.com/show/e7ID777K
0

最新回复(0)