C++权限访问
一、访问权限问题
在C++中的访问权限共有三种,分别为public、private、protected:
一般地,在类的内部,无论成员被声明为哪种,都是可以互相访问的;但在类的外部,如通过类的对象,则只能访问 public 属性的成员,不能访问protected、private属性的成员,注意这句话!无论是什么权限申明,类中任意权限申明的函数都可以访问。
【何为内部访问,内部访问是指类的内部函数(无论是公有、私有还是保护均可)对该类中各个访问权限的数据的访问】
class A { public: int a; private: int b; //即使是在私有区中的内部函数仍可以访问类中的各个申明权限中的数据 int B() { a; b; c; } protected: int c; };
【在类中默认使用private权限访问】
二、关于保护(protected)权限说明
对于protected权限而言,如果不涉及类的继承,那么protected与private权限地位一摸一样并且毫无区别
三、继承方式
对于类内的访问(类中各个函数的访问,无论何种权限申明方式均可)而言,除了屏蔽区,其他的数据随意访问;对于类外的对象实例的数据调用,只能调用当前类的公有区的数据
在正式说类的继承方式之前我们需要提前了解,实际在一个类中我们可以将其分成四个部分,分别是公有区、私有区、保护区、屏蔽区。
公有继承:
基类的公有数据继承为派生类的公有数据;基类的私有数据继承到派生类的屏蔽区;基类的保护数据继承为派生类的保护数据;基类的屏蔽区数据继承到派生类的屏蔽区
结论(只谈论派生类对基类的访问情况):因此在公有继承中,派生类的内部可以访问基类的公有数据(派生类的公有数据)和保护数据(派生类的保护数据),派生类的外部可以访问基类的公有数据(派生类的公有数据)
私有继承:
基类的公有数据继承为派生类的私有数据;基类的私有数据继承到派生类的屏蔽区;基类的保护数据继承为派生类的私有数据;基类的屏蔽区数据继承到派生类的屏蔽区
结论(只谈论派生类对基类的访问情况):因此在公有继承中,派生类的内部可以访问基类的公有数据(派生类的私有数据)和基类的保护数据(派生类的私有数据),派生类的外部不能访问基类的任何数据
保护继承:
基类的公有数据继承为派生类的保护数据;基类的私有数据继承到派生类的屏蔽区;基类的保护数据继承为派生类的保护数据;基类的屏蔽区数据继承到派生类的屏蔽区
结论(只谈论派生类对基类的访问情况):因此在保护继承中,派生类的内部可以访问基类的公有数据(派生类的保护数据)和基类的保护数据(派生类的保护数据),派生类的外部不能访问基类的任何数据
注意:无论是什么方式的继承,父类的除了构造函数、复制构造、析构函数,其余的所有数据(包括私有和保护)都会被继承过来,只不过存在能否访问的问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!