有如下程序: #include #include using namespace std; class Shape{ public: void Draw(); string GetName();

admin2021-05-06  9

问题 有如下程序:
    #include
    #include
    using namespace std;
    class Shape{
    public:
    void Draw();
    string GetName();
    private:
    string name;
    };
    class Rectangle:private Shape{
    protected:
    void Draw(){Shape::Draw();}    //A
    string GetName(){return name;}    //B
    };
    int main(){
    Rectangle rect;
    reet.Draw();    //C
    rect.GetName();    //D
    return 0;
    }
    带标号的语句中,编译时不会出错的是(    )。

选项 A、A
B、B
C、C
D、D

答案A

解析 Rectangle类以私有继承方式继承自基类Shape,所以Shape中公有成员函数Draw(),在派生类Rectangle属于私有成员,可以在Rectangle的成员函数Draw()中访问,选项A正确;而Shape中的私有成员name,在派生类Rectangle中不能直接访问,所以选项B错误;另外Draw()和GetName()在Rectangle中都属于保护成员,无法通过Rectangle对象访问它们,所以选项C、D错误。答案为A选项。
转载请注明原文地址:https://kaotiyun.com/show/UWfp777K
0

最新回复(0)