有如下程序: #include using namespace std; class Base{ public: virtual void func1(){cout

admin2012-12-29  20

问题 有如下程序:
    #include
    using namespace std;
    class Base{
    public:
        virtual void func1(){cout<<“Base 1”;}
        void func2(){coat<<“Base 2”;}
    };
    class Derived:public Base{
    public:
        void func1(){cout<<“Derived 1”;}
        void func2(){cout<<“Derived 2”;}
    };
    int main(){
        Base*p=new Derived;
        p->func1();
        p->func2();
        return 0;
    }
    运行此程序,屏幕上将显示输出__________。

选项 A、Derived 1 Base 2
B、Base 1 Base 2
C、Derived 1 Derived 2
D、Base 1 Derived 2

答案A

解析 派生类Derived由基类Base公有继承而来。调用p->func1();后,执行派生类Derived的函数void func1();调用p.>func2();后,执行基类的函数void func2(),因为虚拟函数是根据对象的实际类型调用,非虚拟函数是根据指针类型调用。故通过指针p调用func2时将直接调用基类中的void func2()。
转载请注明原文地址:https://jikaoti.com/ti/sVL0FFFM
0

最新回复(0)