C++的三种封装层级

C++的三种封装层级


    我们都知道C++的一个好处是封装,在类中有三个封装层次,也是访问的限制,那我们来探索一下public、protect、private这三个家伙。

在定义类中的访问限制

  • public:以下的这些成员和方法公开为外界使用,自身、子类都可以使用
  • protect:以下的这些成员和方法只限成员本身和子类进行使用,不对其他开放
  • private:以下这些成员和方法只能自己使用,不对外界和子类开放

    下面我们上一盘栗子给各位看官吃吃:

//定义一个基类
class base {
//在内部完全能随便使用public、protect和private三个级别的东西
public:
    int a;
    void af() { cout << a << endl; bf(); cf(); };

protected:
    int b;
    void bf() { cout << b << endl; af(); cf(); };

private:
    int c;
    void cf() { cout << c << endl; af(); bf(); };

public:
    base():a(1),b(2),c(3) {};
    ~base() {};
};

class drive :public base {
    void fun() {
        //public级别的能过使用
        cout << a << endl;
        af();
        //protect级别的也能过使用
        cout << b << endl;
        bf();
        //但private级别的不能使用了,以下两行会报错
        cout << c << endl;XXXXXXXXXXXXXX
        cf();XXXXXXXXXXXXXXXXXXXXX
    }
};

int main() {
    base t;
    //public级别能在外界调用
    cout << t.a << endl;
    t.af();
    //但protect和private级别的就不能再外界调用了,以下四行会报错
    cout << t.b << endl;XXXXXXXXXXX
    t.bf();XXXXXXXXXXXX
    cout << c << endl;XXXXXXXXXXXXXX
    c.cf();XXXXXXXXXXXXXXX

    drive d;
    //publict继承过来后public级别的能过调用
    d.a;
    d.af();
    //但public继承过来的protect和private就不能调用了
    d.b;XXXXXXXXXXXx
    d.bf();XXXXXXXXXXx
    d.c;XXXXXXXXXXX
    d.cf();XXXXXXXXXXXXX
}

    下面是封装级的一个整理:

这里写图片描述

继承中的三个封装级

    在不同的继承方式中,父类中的封装级会发生不同的变化,下面是继承中相应的三个封装继承的变化:

这里写图片描述

    简单概括一下就是父类中private级别的封装子类不会继承;public的继承会维持父类原来的public、protect前两者的封装级别,而protect继承前两者都会成为protect,private继承将前两者变成private

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值