#include using namespace std; class base { public:virtual int foo( int ival = 1024 ) {cout << "base::foo() -- ival: " << ival << endl;return ival;}// ... }; class derived : public base { public:int foo( int ival = 2048 ) {cout << "derived::foo() -- ival: " << ival << endl;return ival;}// ... }; //====================================================================== // 证明了一点,virtual带缺省参数时,缺省参数和指针或引用对象类型绑定 // 也就是说基类指针或引用调用的是派生类中的函数,但是缺省参数是从基类 // 继承了过来,而派生类指针或引用调用的是自身的虚函数,缺省参数是本身的 //====================================================================== int main() {derived obj;derived *pd = &obj; //new derived;base *pb = pd;int val = pb->foo();cout << "main() : val through base: "<< val << endl;val = pd->foo();cout << "main() : val through derived: "<< val << endl;return 0; }