#include <iostream>
#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 main(int argc, char* argv[])
{
Base * pb = new Derived;
pb->g();
delete pb;
return 0;
}
将会输出什么么?
-----------------------------------------------
哈哈 -| Derived::g(int i) 10 (not 20!!)
因为预先设定的参数是有静态型别来设定的,而调用的函数型别则是动态的确定。
本文通过C++代码示例介绍了基类与派生类中虚函数的使用及覆盖情况,展示了如何通过指针调用不同类型的成员函数,并解释了默认参数的行为表现。
317

被折叠的 条评论
为什么被折叠?



