C++之派生类继承权限

一、public继承

通俗的说就是父类的public和protected的成员到了子类,就属于子类的public和protected的权限(这里的权限是其他类或外部函数对子类中成员的访问权限,而不是子类对父类的访问权限),子类对父类的private无访问权限。

二、protected继承

父类的public和protected的成员到了子类,都变成属于子类的protected的权限,子类对父类的private无访问权限。

三、private继承

父类的public和protected的成员到了子类,就属于子类的private权限,子类对父类的private无访问权限。

举个例子:

class A{
public:
    int Aa;
protected:
    int Ab;
private:
    int Ac;
};

class B: private A{
public:
    int Ba;
    void dis(){
        Aa = 10;    //编译通过
        Ab = 20;    //编译通过
        Ac = 30;    //编译报错,Ac是A的私有成员,无访问权限
    }
protected:
    int Bb;
private:
    int Bc;
};

class C:public B{
public:
    int Ca;
    void dis(){
        Aa = 10;    //编译报错,此时C对Aa的访问权限变成private
        Ab = 20;    //编译报错,此时C对Ab的访问权限变成private
        Ac = 30;    //编译报错,此时C对Ac的访问权限变成private
    }
protected:
    int Cb;
private:
    int Cc;
};

B private继承A, C public 继承B。

四、成员访问权限的目的

public成员: 提供公共接口

protected成员: 传承数据

private成员: 隐藏数据

五、继承权限

public继承:提供公共接口并传承数据(public还是public,protected还是protected)

protected继承:传承数据(public和protected都变成protected)

private继承:隐藏数据也不提供接口(public和protected都变成private)

六、继承方式选择

一般情况下都会选择public,让持续提供接口并传递数据,个别情况下才会使用protected和private的继承方式。

class 类名{
public:
    一般常见接口;
protected:
    常见接口;
    高效接口;
private:
    特效接口;
};

也就是说这种事用于公司出不能版本的产品,已针对不同类型的用户,比如家庭版,企业版。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值