9.7 public、protected 和 private 继承
优质
小牛编辑
129浏览
2023-12-01
从一个基类派生一个类时,继承基类的方式有三种:public、protected 和 private。protected 继承和 private 继承不常用,而且使用时必须相当小心。本书中的范例都是使用 public 继承(第15章将介绍用 private 继承作为复合的另一种形式)。图 9.6 总结了每种继承中派生类对基类成员的访问性。第一列包含基类成员的访问说明符。
基类成员的访问说明符 | 继承类型 | ||
---|---|---|---|
public 继承 | protected 继承 | private 继承 | |
public | 在派生类中为 public,可以由任何非 static 成员函数、友元函数和非成员函数访问 | 在派生类中为 protected,可以直接由任何非 static 成员函数、友元函数访问 | 在派生类中为 private,可以直接由任何非 static,成员函数、友元函数访问 |
protecetd | 在派生类中为 proteced,可以直接由任何非static成员函数访问 | 在派生类中为 protected,可以直接由任何非static成员函数、友元函数访问 | 在派生类中 private,可以直接由任何非static成员函数、友元函数访问 |
private | 在派生类中隐藏,可以通过基类的public或protected成员函数由非static成员函数和友元函数访问 | 在派生类中隐藏可以通过基类的public或protected成员函数由非static成员函数和友元函数访问 | 在派生类中隐藏,可以通过基类的public或protected成员函数由非static成员函数和友元函数访问 |
图 9.6 派生类对基类成员的访问性
从 public 基类派生某个类时,基类的 public 成员会成为派生类的 public 成员,基类的 protected 成员成为派生类的 protected 成员。派生类永远也不能直接访问基类的private成员,但可通过基类 public 或 protected 成员间接访问。
从 protected 基类派生一个类时,基类的 public 成员和 protected 成员成为派生类的 protected 成员。从private基类派生一个类时,基类的 public 成员和 protected 成员成为派生类的 private 成员(例如,函数成为工具函数),provate 和 protected 继承不是 是 的关系。