C++ 类成员的访问权限与继承权限
三种访问方式
① public:用该关键字修饰的成员表示公有成员,该成员不仅可以在类内可以被访问,在类外也是可以被访问的,是类对外提供的可访问接口;可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问。
② private:用该关键字修饰的成员表示私有成员,该成员仅在类内可以被访问,在类体外是隐藏状态;可以由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问。
③ protected:用该关键字修饰的成员表示保护成员,保护成员在类体外同样是隐藏状态,但是对于该类的派生类来说,相当于公有成员,在派生类中可以被访问。可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问。
注:友元函数包括两种:设为友元的全局函数,设为友元类中的成员函数。
三种继承方式
① 若继承方式是 public,基类成员在派生类中的访问权限保持不变,也就是说,基类中的成员访问权限,在派生类中仍然保持原来的访问权限;
② 若继承方式是private,基类所有成员在派生类中的访问权限都会变为私有(private)权限;
③ 若继承方式是 protected,基类的共有成员和保护成员在派生类中的访问权限都会变为保护(protected)权限,私有成员在派生类中的访问权限仍然是私有(private)权限。
A类(基类) | B类(A的派生类) | C类(B的派生类) | |
---|---|---|---|
公有继承 | 公有成员 | 公有成员 | 公有成员 |
私有成员 | (无) | (无) | |
保护成员 | 保护成员 | 保护成员 | |
私有继承 | 公有成员 | 私有成员 | (无) |
私有成员 | (无) | (无) | |
保护成员 | 私有成员 | (无) | |
保护继承 | 公有成员 | 保护成员 | 保护成员 |
私有成员 | (无) | (无) | |
保护成员 | 保护成员 | 保护成员 |