C++ 中 protected/public/private 访问控制修饰符的区别
在 C++ 中,public
、protected
和 private
是三种访问控制修饰符,用于控制类成员的访问权限。它们在 类继承 和 对象访问 时表现不同。
访问修饰符 | 类内部访问 | 类外部访问 | 子类访问 |
---|---|---|---|
public | ✅ 允许 | ✅ 允许 | ✅ 允许 |
protected | ✅ 允许 | ❌ 不允许 | ✅ 允许 |
private | ✅ 允许 | ❌ 不允许 | ❌ 不允许 |
最佳实践:
- 尽量使用
private
:封装内部实现,减少外部依赖。 - 谨慎使用
protected
:仅在需要子类访问时使用。 -
public
用于接口:提供外部调用的方法。
常见问题
Q1: 为什么构造函数通常是 public
?
- 如果构造函数是
private
或protected
,外部代码无法直接创建对象(单例模式除外)。
Q2: 如何让子类访问基类的 private
成员?
- 不能直接访问,但可以通过基类的
protected
或public
方法间接访问。