C++类的继承机制的一个特点是多态性。所谓多态性是指子类和父类中具有相同函数名但不同操作的函数。那么问题来了,同一个函数名在调用时该选择那个函数体呢?其中一个方法是静态绑定,即编译时选择函数体,也叫缺省的函数调用方式。
动态绑定即在运行时选择函数体,是桥接子类和父类之间同名函数的接口。侧重于父类对象对子类同名函数调用的实现。动态绑定通过虚函数实现,使用规则有4点:
1. 要有一个继承层次
2. 在基类中要定义虚函数
3. 在派生类中要对基类中定义的虚函数进行重定义
4. 要通过基类指针(或基类引用)来调用虚函数
case:
#include <iostream>
using namespace std ;
class a
{
public:
virtual void h(double) {
cout << "aaaaaa!" << endl ;
}
};
class b: public a
{
public:
void h(double) {
cout << "bbbbbb!" << endl ;
}
} ;
int main()
{
class a *p , pp;
class b obj ;
p = &obj ;
p->h(77.08);
pp.h(77.08);
return 0 ;
}