早绑定与晚绑定

静态绑定(早绑定):
  程序在编译阶段根据参数个数确定调用哪个函数(重载)。

动态绑定(晚绑定):
  以封装和继承为基础,将成员函数和析构函数声明为虚函数(virtual)。
构造函数不能声明为virtual:

1
2
3
4
Shape *shape1 = new Circle(3.5, 4.0);
shape -> calcArea(); //父类指针调用子类面积函数delete Shape1;//先调用子类析构函数,再调用父类析构函数
shape1 = NULL;
return 0;

1
virtual double cost()=0; //纯虚函数

纯虚函数在类内声明,在类内或类外定义函数,而纯虚函数无函数体。

含有纯虚函数的类称为抽象类
只含有纯虚函数的类称为接口类(没有任何数据成员)。

Java: 通过”abstract”关键字实现多态。

---------------- The End ----------------
0%