在 C++ 中,私有继承(Private Inheritance) 是一种继承方式,其核心特点是:基类(父类)的所有公有(public
)和保护(protected
)成员在派生类(子类)中都会变成私有成员。这意味着:
📌 关键特性
-
访问权限变化:
- 基类的
public
和protected
成员在派生类中变为private
。 - 基类的
private
成员始终不可直接访问(除非通过友元)。
- 基类的
-
对外隐藏继承关系:
- 派生类对象无法直接访问基类的公有成员(因为它们在派生类中变为私有)。
- 外部代码和派生类的子类(如果有)也无法通过派生类对象访问基类成员。
-
“is-implemented-in-terms-of” 关系:
- 私有继承表示派生类根据基类实现,而非“是一种(is-a)”关系(公有继承的语义)。
- 类似于组合(对象作为成员),但允许派生类重写基类的虚函数或访问其保护成员。
🖥️ 语法示例
class Base {
public:
void basePublic() {
}
protected:
void baseProtected() {
}
private:
void basePrivate() {
}
};
// 私有继承(private 可省略,因为 class 的默认继承是 private)