在 C 语言面向对象编程(一)里说到继承,这里再详细说一下。
C++ 中的继承,从派生类与基类的关系来看(出于对比 C 与 C++,只说公有继承):
- 派生类内部可以直接使用基类的 public 、protected 成员(包括变量和函数)
- 使用派生类的对象,可以像访问派生类自己的成员一样访问基类的成员
- 对于被派生类覆盖的基类的非虚函数,在派生类中可以通过基类名和域作用符(::)来访问
- 当使用基类指针调用虚函数时,会调用指针指向的实际对象实现的函数,如果该对象未重载该虚函数,则沿继承层次,逐级回溯,直到找到一个实现
先看 C 语言中通过“包含”模拟实现继承的简单代码框架:
struct base{
int a;
};
struct derived{
struct base parent;
int b;
};
struct derived_2{
struct derived parent;
int b;
};
上面的示例只有数据成员,函数成