【C++】虚函数与多态
一、虚函数
类成员方法(除过构造函数)前使用virtual关键字,将函数声明成虚函数。类外实现函数的定义无需在前加virtual关键字。
1
2
3
4
5
6
7
8
class Person
{
public:
virtual void work()
{
cout << "工作" << endl;
}
};
1 | class Person |
二、多态
静态多态:编译期间就已经确定函数的调用时机(函数重载、运算符重载)
动态多态:运行时确定函数的调用时机
动态多态触发条件:
- 公有继承中
- 基类含有虚函数&&派生类重写虚函数
- 使用基类指针或引用访问派生类成员方法
1 | class Person |
总结:
- 虚函数适用于有继承关系的类对象(类的成员函数才能设置成虚函数)
- 静态成员函数不能作为虚函数(不依赖于对象)
- 成员函数内联不能作为虚函数(每个对象一份拷贝,无映射关系)
- 构造函数不可以作为虚函数(调用构造函数时,对象还未被实例化)
- 基类和派生类中动态分配内存空间时,需要将析构函数定义为虚函数(实现析构对象的多态性)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 code-016!