首先我们先了解下什么叫绑定:
绑定是函数体与函数调用关联起来叫做绑定。
早绑定:早绑定发送在程序运行之前,也是编译和链接阶段,
类似下面func函数的调用与定义在编译阶段便已经确定,这就叫早绑定
void func()
{
cout<<"func"<<endl;
}
int main()
{
func();
return 0;
}
晚绑定:晚绑定发生在程序运行期间,主要体现在继承的多态方面,c++有句话说,引用一句Bruce Eckel的话:“不要犯傻,如果它不是晚邦定,它就不是多态。” 父类和子类都定义了show方法,在继承的过程中,由于父类show方法是虚函数,这时候子类继续时将会覆盖/重写父类的show方法,这时候呢,
Father *s = new Son; //即使是父类指针指向子类对象
s->show();
执行结果:
I am son
下面代码,
#include <iostream>
using namespace std;
class Father{
public:
virtual void show(){
cout<<"I am father"<<endl;
}
virtual ~Father(){
cout<<"father destructor func"<<endl;
}
};
class Son :public Father{
public:
void show() {
cout<<"I am son"<<endl;
}
~Son(){
cout<<"Son destructor func"<<endl;
}
};
int main(int argc, char *argv[])
{
Father *s = new Son;
s->show();
delete s;
return 0;
}