#include "stdafx.h"
#include <complex>
using namespace std;
class Base
{
public:
virtual void f(int);
virtual void f(double);
virtual void g(int i = 10);
};
void Base::f(int)
{
cout << "Base::f(int)" << endl;
}
void Base::f(double)
{
cout << "Base::f(double)" << endl;
}
void Base::g(int i)
{
cout << i << endl;
}
class Derived : public Base
{
public :
void f(complex<double>);
void g(int i = 20);
// using Base::f;
};
void Derived::f(complex<double>)
{
cout << "Derived::f(complex<double>)" << endl;
}
void Derived::g(int i)
{
cout << "Derived::g(int i)" << i << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
Base * pb = new Derived;
pb->g();
delete pb;
return 0;
}
将会输出什么么?
-----------------------------------------------
哈哈 -| Derived::g(int i) 10 (not 20!!)
因为预先设定的参数是有静态型别来设定的,而调用的函数型别则是动态的确定