在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仍然是正确的。
标签:成员,private,访问,说明符,C++,派生类,protected,public From: https://www.cnblogs.com/wuyawine/p/16614098.html