//动态绑定: 在运行时刻 根据实际指向的类型来确定函数属于类
//编译器默认采用静态绑定 ,动态绑定要用到虚函数 。
//只有通过引用或指针来访问对象的虚函数时才进行动态绑定。
// 通过引用或指针来访问对象的非虚函数 和 不通过引用和指针来访问对象的成员函数时 采用静态绑定。
#include <iostream>
using namespace std;
class A
{
int x,y;
public :
virtual void f()
{
cout<<"Call A::f()"<<endl;
}
};
class B :public A
{
int z;
public :
virtual void f()
{
cout<<"Call B::f()"<<endl;
}
void g()
{
}
};
void func1(A& x)
{
x.f();
}
void func2(A *p)
{
p->f();
}
int main()
{
A a;
func1(a);
func2(&a);
B b; // 去掉f()的vitual话 , 会调用A的f()方法,执行的静态绑定。
func1(b);
func2(&b);
return 0;
}