C++关键字访问权限简说

类的访问权限有三种:

public 公共权限: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问
protected 保护权限: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问
private 私有权限:只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问。

为什么要这样分呢?它们的使用有什么区别呢?
三种权限的区别:

public:可以被任意实体访问
protected:只允许本类及子类的成员函数访问
private:只允许本类的成员函数访问
 

继承
继承的方式有三种:

公共继承
保护继承
私有继承
继承后的属性变化:

使用private继承,基类的所有方法在子类中变为private;
使用protected继承,将基类中public成员变为子类的protected成员,其它成员的访问权限不变;
使用public继承,基类中的方法属性不发生改变;
 

保护成员的作用:
假如基类Base中有一个成员b,设计要求隐藏这个成员,但是在派生类的成员函数中又经常访问到。如何设计呢?

选择public,那么其安全性受到威胁。
选择private,派生类无法访问这个数据,只能间接访问。
所以我们有了protected!像上述b这种,出于隐藏的目的不能设为公有public,但又需要在派生类的成员函数中经常访问到的基类成员,将它们设置为保护成员,既能起到隐藏的目的,又避免了派生类成员函数要访问它们时只能间接访问所带来的麻烦。

保护成员的可访问范围比私有成员大,比公有成员小。能访问私有成员的地方都能访问保护成员。

保护成员扩大的访问范围表现在:基类的保护成员可以在派生类的成员函数中被访问。

#include<iostream>
using namespace std;
 
class MBase{
    public: int a;
    protected: int b;
    private: int c;
};
 
class sub:public MBase{
    void OutPrint(){
        cout<<a<<endl;  //可访问 public权限 
        cout<<b<<endl;  //可访问 protected权限 
        //cout<<c<<endl; //不可访问  
    }
};
 
int main() {
    sub  A;
    cout<<A.a<<endl; //对象可以访问public成员
    //cout<<A.b<<endl; //protected无法访问 
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值