使用VC6打开考生文件夹下的工程test16_1,此工程包含一个源程序文件test16_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为: Which act(a or b)?b act1 act2 Bact3

admin2009-01-15  49

问题 使用VC6打开考生文件夹下的工程test16_1,此工程包含一个源程序文件test16_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为:
   Which act(a or b)?b
   act1
   act2
   Bact3
   Bact4
   Bend
   源程序文件test16_1.cpp清单如下:
     #include<iostream.h>
     class A
     {
    public:
     virtual void act1(){cout<<"actl\n";act2();}
     void act2(){cout<<"act2\n";act3();}
     /**********+******  found  *****************/
     void act3(){cout<<"Aact3\n";act4();}
    /*****************  found  *****************/
     virtual void act4{cout<<"Aact4\n";act5();}
     void act5(){cout<<"Aend\n";}
    };
    class B:public A
    {
     void act3(){cout<<"Bact3\n";act4();}
     void act4() {cout<<"Bact4\n";act5() ;}
     void act5() {cout<<"Bend\n";}
    };
    void main (void)
    {
    char c;
    A *a;
    cout<<"Which act (a or b) ?";
  /*****************  found *****************/
    cin<<c;
    if(c==’a’)
      a = new A;
    else
      a = new B;
    a->act1 ( );
    delete a;
    }

选项

答案(1)错误:voidact3(){cout<<"Aact3\n";act4();} 正确:virtual void act3(){cout<<"Aact3\n";act4();} (2)错误:virtual void act4{cout<<"Aact4\n";act5();} 正确:virtual void act4(){cout<<"Aact4\n";act5();} (3)错误:cin<<c; 正确:cin>>c;

解析 (1)主要考查考生对于虚函数使用规则的理解,要实现对函数act3的动态联编应该使用虚函数,这样在本题中对于函数的调用才能实现根据不同对象调用不同函数;
(2)主要考查考生对于函数定义的掌握,虽然参数表为空,但括号是不能省略的:
(3)主要考查考生是否会使用流输入操作,本题中使用的是流输出符。
转载请注明原文地址:https://jikaoti.com/ti/7YkiFFFM
0

最新回复(0)