有如下类定义: class B{ private:void funl(){} protected:void fun2(){} public:void fun3(){} }; class D:public B{

admin2021-02-22  24

问题 有如下类定义:
    class B{
    private:void funl(){}
    protected:void fun2(){}
    public:void fun3(){}
    };
    class D:public B{
    protected:void fun4(){}
    };
    若obj是类D的对象,则下列语句中正确的是(    )。

选项 A、obj.fun1();
B、obj.fun2();
C、obj.fun4();
D、obj.fun3();

答案D

解析 派生类对基类成员的访问权限由基类成员的访问标识和类派生列表中的访问标识共同决定的,类D公有继承类B,所以类B中成员函数funl对类D不可见;成员函数fun2为类D的protected成员;成员函数fun3为类D的public成员;综上所述funl,fun2,fun4对类D对象obj均不可见,fun3对obj可见,答案为D。
转载请注明原文地址:https://kaotiyun.com/show/09fp777K
0

最新回复(0)