多态可以分为静态多态和动态多态
静态多态:函数重载,泛型编程,编译器在编译期间内完成的,编译器根据函数实参的类型可推断出调用哪个函数
动态多态:虚函数实现并给于类继承来表现
动态多态的机制:
1.子类继承父类
2.类实现接口
动态绑定的条件:
1.必须是虚函数
2.通过基类类型的引用或者指针调用
总结:
1.派生类重写基类的虚函数实现多态,要求函数名、参数列表、返回值完全相同
2.基类中定义了虚函数,在派生类中该函数始终保持虚函数的特性
3.只有类的成员函数才能定义虚函数,静态成员函数不能定义虚函数
4.如果在类外定义虚函数,只能在声明函数时加上virtual关键字,定义时不用加
5.构造函数不能定义为虚函数,
6.不要在构造函数和析构函数中调用虚函数,在构造函数和析构函数中,对象是不完整的,可能会出现未定义的行为
7.最好将基类的析构函数声明为虚函数。
8.虚表是所有类对象实例共用的