有如下程序: #inc1ude <iostream> using namespace std; c1ass B{ public: B(int xx):x(xx){++count;x+=10;} virtual

admin2020-04-07  25

问题 有如下程序:
    #inc1ude <iostream>
    using namespace std;
    c1ass B{
    public:
    B(int xx):x(xx){++count;x+=10;}
    virtual void show()const
    {cout<<count<’_’<x<<end1;}
    protected:
    static int count;
    private:
    intx;
    };
    c1ass D:public B{
    public:
    D(int xx,int yy):B(xx),y(yy){++count;y+=100;}
    virtual void show()const
    { cout<<count<<’.’<<y<<end1;)
    private:
    int y;
    };
    int B::count =0;
    int  main(){
    B *ptr=new D(10,20);
    ptr—>show0;
    delete ptr;
    retum 0;
    }
    运行时的输出结果是(    )。

选项 A、1_120
B、2_120
C、1_20
D、2_20

答案B

解析 在主函数中定义了一个基类B的指针变量ptr,并调用类D的构造函数创建了类D的实例对象,因为变量count是全局变量所以在调用基类B的构造函数给其值加1,在调用D的构造函数时给其值加1,因而输出其值等于2,在类D的构造函数中给成员变量y的值加100,所以其等于120并输出。
转载请注明原文地址:https://jikaoti.com/ti/naA0FFFM
0

最新回复(0)