使用VC6打开考生文件夹下的工程test10_1,此工程包含一个源程序文件test10_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为; class Base class D1 class D2 class

admin2009-01-15  36

问题 使用VC6打开考生文件夹下的工程test10_1,此工程包含一个源程序文件test10_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为;
   class Base
   class D1
   class D2
   class D3
   fin Base
   源程序文件test10_1.cpp清单如下:
       #include<iostream.h>
       class Base
       {
       public:
        Base(){cout<<"class Base"<<endl;}
        void f(){cout<<"f in Base"<<endl;}
       };
       class D1:virtual public Base
       {
       public:
        D1(){cout<<"class D1"<<endl;}
        void f(){cout<<"f in D1"<<endl;}
       };
       /*********found**********/
       class D2:public Base
       {
       public:
        D2(){cout<<"class D2"<<endl;}
        /**********found**********/
       class D3::public  D1,public D2
       {
       public:
        D3(){cout<<"class D3"<<endl;}
       };
       void main()
       {
        D3 d;
       /**********found************/
        d.f();
       }

选项

答案(1)错误:class D2:public Base 正确:class D2:virtual public Base (2)错误:class D3::public D1,public D2 正确:class D3:public D1,public D2 (3)错误:d.f(); 正确:d.Base::f();

解析 (1)主要考查考生对虚基类的理解,虚基类可以解决二义性的问题,其定义方式是在继承列表中使用virtual关键字,使用虚基类可以避免程序运行中对基类函数调用的不惟一;
(2)主要考查考生对类的定义方法的掌握,“::”为作用域符,此处应该使用“:”,因为后面是继承列表;
(3)主要考查考生对虚基类函数调用过程的理解,只有使用“:”限定才能访问基类函数,否则将会调用自身的函数,如果该类没有该函数的定义,则会自动调用其父类的该函数,所以必须使用“::”符号。
转载请注明原文地址:https://jikaoti.com/ti/eMkiFFFM
0

最新回复(0)