软件开发工程师修炼中|
📂C/C++
🔖cpp
2022-08-22 20:05阅读: 228评论: 0推荐: 0

【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 中国大陆许可协议进行许可。

posted @   无涯清酒  阅读(228)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起