【C++-笔记】访问说明符public、protected和private的用途和区别
在C++当中,访问说明符主要在如下两个场景中使用:
成员访问说明符
当我们在定义/声明一个类时,需要使用成员访问说明符来说明成员的访问权限,public、protected和private的区别如下:
- public中的成员不论是类中的成员还是类生成的对象都可以访问
- protected中的成员只有类中的成员和派生类可以访问
- private中的成员只有类中的成员可以访问,该类生成的对象和派生类都无法访问
代码示例如下:
class Base {
public:
int getNum() {return num;}
protected:
int dri;
private:
int num = 0;
};
class Drived : public Base {
public:
int getProNum() {return dri;} // 正确,能访问基类的protected成员
private:
int b;
}
....
Base x;
int a = x.getNum(); // 正确,类的对象能够使用public成员
int c = x.num; // 错误,类的对象不能够使用private成员
派生访问说明符
在上面的用途中提到,类内的访问说明符其实就是表明了外部/内部/派生类对类内成员的访问权限,而派生访问说明符用于派生类,形式一般如下:
class 派生类: 访问说明符 基类名
这里的访问说明符的目的是控制派生类用户(注意,不是派生类本身)对于基类成员的访问权限,应该怎么理解呢?也就是说规定了派生类生成的对象对于基类成员的访问权限
- 如果使用public公有继承,则派生类的对象可以访问基类的public和protected成员
- 如果使用protected继承,则基类的public成员和protected成员都是protected的,派生类的对象无法访问
- 如果使用private私有继承,则基类的所有成员对于派生类的对象来说都是无法访问的
前述的例子中,如果我们将继承方式改成私有继承,成员函数getProNum仍然是正确的。
本文作者:无涯清酒
本文链接:https://www.cnblogs.com/wuyawine/p/16614098.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步