有如下程序: using namespace std; class B{ public: B(int xx):x(xx){++count;x+=10;} virtual void show()const {c

admin2017-04-25  57

问题 有如下程序:
    using namespace std;
    class B{
    public:
    B(int xx):x(xx){++count;x+=10;}
    virtual void show()const
    {cout<<count<<’_’<<x<<endl;}
    protected:
    static hat count;
    private:
    mt x:
    };
    class 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->show();
    delete ptr;
    return 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/U8t0FFFM
0

最新回复(0)