继承、虚基类与虚函数
继承
C++中继承允许一个类继承另一个类的实例和静态属性和方法。
继承的主要特征:
- 子类扩展了父类的功能
- 子类复用了父类的代码,减少重复代码
- 子类可以访问并重写父类的方法
基本语法:
class Derived: access_specifier Base
{
// Body of derived class
}
derived; // Object of derived class
- Derived: 派生类名
- Base: 基类名
- access_specifier: 继承类型,共有三种
- public: 默认。公共的。允许公共和保护成员继承
- protected: 允许保护和公共成员继承
- private: 允许私有成员继承
虚基类
当一个类继承自多个父类时,如果这多个父类中存在同名的数据成员或成员函数,则产生 ambiguity。
为了解决这种情况,C++ 中提供了虚基类的概念。
虚基类的特点:
- 子类只继承一份父类的数据或者函数
- 子类可以通过指针或引用访问虚基类
语法:
class Derived: virtual access_specifier Base1, virtual access_specifier Base2
{
...
} derived;
使用 virtual
关键字来指定虚基类。
虚函数
虚函数是允许在运行时进行多态的函数。
虚函数的特点:
- 被 virtual 关键字声明
- 在派生类中可以被重写
- 运行时根据对象类型调用对应的函数
语法:
virtual return_type function_name (parameters);
声明虚函数时加上 virtual 关键字。
虚函数可以实现接口以及模板方法模式。