若有如下类定义: c1ass B{ void funl(){} protected: double varl; public: void fun2(){} }; c1ass D:public

admin2020-11-11  21

问题 若有如下类定义:
    c1ass B{
    void funl(){}
    protected:
    double varl;
    public:
    void fun2(){}
    };
    c1ass D:public B{
    protected:
    void fun3(){}
    };
    已知obj是类D的对象,下列句中不违反类成员访问控制权限的是(    )。

选项 A、obj.funl();
B、obj.varl;
C、obj.fun2();
D、obj.fun3();

答案C

解析 此题考查的是基类成员在派生类中的访问属性。派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员;派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都变成私有成员;派生类从基类保护继承时,基类的公有成员在派生类中变成保护成员,基类的保护成员在派生类中仍然是保护成员。根据以上分析可知,本题中只有从B类继承的fun2()为公有属性,故选C选项。
转载请注明原文地址:https://jikaoti.com/ti/r3l0FFFM
0

最新回复(0)