![86152ea099a4bc07d8ef2d880363b500.png](https://i-blog.csdnimg.cn/blog_migrate/d85c3c64c2e637d8ca16502625733309.jpeg)
接上文:C++类成员的三种访问权限:public/protected/private
C++ 通过 public、protected、private 三个关键字来控制成员变量和成员函数的访问权限(也称为可见性)。
- public:可以被该类中的函数、子类的函数、友元函数访问,也可以由该类的对象访问;
- protected:可以被该类中的函数、子类的函数、友元函数访问,但不可以由该类的对象访问;
- private:可以被该类中的函数、友元函数访问,但不可以由子类的函数、该类的对象、访问。
同时,公有继承(public)、保护继承(protected)、私有继承(private)是 C++ 的三种继承方式,它们相应改变了基类成员的访问属性。
1、公有继承
公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原来的状态。
因此,派生类的成员函数可以访问基类的公有成员和保护成员;而派生类的对象只可以访问基类的公有成员。
2、保护继承
保护继承的特点是基类的公有成员和保护成员都成为派生类的保护成员。
所以,派生类的成员函数可以访问基类公有成员和保护成员;而派生类的对象不可以访问。
![6ab29523466fd6ef40be1a22d82778d7.png](https://i-blog.csdnimg.cn/blog_migrate/4ea2154a52e7397e9cc8ebf97813a4f2.jpeg)
3、私有继承
私有继承的特点是基类的公有成员和保护成员都成为派生类的私有成员。
所以,派生类的成员函数可以访问基类公有成员和保护成员;而派生类的对象不可以访问。
不管哪种继承方式,下面两点都没有改变:
- 基类的私有成员仍然是私有的,只能被本类成员函数和友元访问,不能被派生类访问;
- 保护成员可以被派生类访问,但不能被派生类的对象访问。
![4088cbdc4e58fe81a7cca36721a86989.png](https://i-blog.csdnimg.cn/blog_migrate/d40fe4bbd1506eb046dabb8529ed09c7.jpeg)