C++关键字protected的作用详解

类的访问权限

类的访问权限有三种:

  • 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 Base{
	public: int a;
	protected: int b;
	private: int c;
};
 
class son:public Base{
	void show(){
		cout<<a<<endl;  //可访问 public权限 
		cout<<b<<endl;  //可访问 protected权限 
		//cout<<c<<endl; //不可访问  
	}
};
 
int main() {
	son A;
	cout<<A.a<<endl; //对象可以访问public成员
	//cout<<A.b<<endl; //protected无法访问 
	return 0;
}

 

 

 

 

 

  • 41
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值