本节本想说的是动态绑定,结果发现这个指针和引用的区别有必要也复习一下
动态绑定与静态绑定
静态绑定:编译时绑定,通过对象调用。
动态绑定:运行时绑定,通过地址实现。并且只对虚函数有效。
所以有上述定义可发现,只有指针和引用来调用虚函数才能实现动态绑定,其余的都属于静态绑定。
下面用代码来描述下
class CBase
{
public:
virtual int func() const //虚函数
{
cout<<"CBase function! ";
return 100;
}
};
class CDerive : public CBase
{
public:
int func() const //在派生类中重新定义虚函数
{
cout<<"CDerive function! ";
return 200;
}
};
void main()
{
CDerive obj1;
CBase* p1=&obj1;
CBase& p2=obj1;
CBase obj2;
obj1.func(); /