有如下程序: #inc1ude<iostream> using namespace std; c1ass B{ public: virtual void f(){cout<<"B";} void g(){co

admin2019-06-12  71

问题 有如下程序:
    #inc1ude<iostream>
    using namespace std;
    c1ass B{
    public:
    virtual void f(){cout<<"B";}
    void g(){cout<"’B";}
    };
    c1ass D:public B{
    public:
    void f(){cout<<"D";}
    void g(){cout<<"D";}
    };
    void h(B*p){p—>f();p—>g();}
    int main(){
    D obj;
    h(&obj);
    return 0;
    }
    运行这个程序的输出结果是(    )。

选项 A、DD
B、BB
C、BD
D、DB

答案D

解析 在基类B中定义虚函数f()和成员函数g(),而在派生类D中定义了函数f0和同名函数g()。而函数h中的形参为指向基类的指针变量p,所以在主函数中执行h(&obj)时,会调用派生类的函数f(),输出D,再调用基类的函数g(),输出B。
转载请注明原文地址:https://jikaoti.com/ti/lyA0FFFM
0

最新回复(0)