virtual函数是动态绑定(后期绑定),缺省参数是静态绑定(前期绑定)
对象的静态类型:就是它在被声明时所采用的类型;
对象的动态类型:目前所指对象的类型。父类指针,指向了子类对象,动态类型就是子类类型
#include <iostream>
using namespace std;
class A
{
public:
A()
{
cout << "A()" << endl;
}
virtual int func(int i=1)
{
cout << "class A" << endl;
cout << "i = " << i << endl;
return i+1;
}
};
class B: public A
{
public:
int func(int i=10)
{
cout << "class B " << endl;
cout << "i = " << i << endl;
return i;
}
};
int main()
{
A* p = new B();
cout << p->func() << endl; // class B i = 1
delete p;
return 0;
}