#include <iostream.h>
class Base
{
public:
virtual Base* f(Base&)
{ cout << "Base::f() " << endl;
return this;
}
};
class Derived : public Base
{
public:
Derived* f(Derived&)
{ cout << "Derived::f()" << endl;
return this;
}
};
void main(void)
{
Derived d;
Base *pb = &d;
pb->f(d); // 结果: Base::f()
d.f(d);//结果:Derived::f()
}
//如果一个函数的返回是一个指向基类的指针或引用,参数是基类的指针或引用;派生类里重载的一个返回是一个指向派生类的指针或引用,参数是基类的指针或引用,依然重载成功
#include <iostream.h>
class Base
{
public:
virtual Base* f(Base&)
{ cout << "Base::f() " << endl;
return this;
}
};
class Derived : public Base
{
public:
Derived* f(Base&)
{ cout << "Derived::f()" << endl;
return this;
}
};
void main(void)
{
Derived d;
Base *pb = &d;
pb->f(d); // 结果 :Derived::f()
d.f(d);//结果:Derived::f()
}
class Base
{
public:
virtual Base* f(Base&)
{ cout << "Base::f() " << endl;
return this;
}
};
class Derived : public Base
{
public:
Derived* f(Derived&)
{ cout << "Derived::f()" << endl;
return this;
}
};
void main(void)
{
Derived d;
Base *pb = &d;
pb->f(d); // 结果: Base::f()
d.f(d);//结果:Derived::f()
}
//如果一个函数的返回是一个指向基类的指针或引用,参数是基类的指针或引用;派生类里重载的一个返回是一个指向派生类的指针或引用,参数是基类的指针或引用,依然重载成功
#include <iostream.h>
class Base
{
public:
virtual Base* f(Base&)
{ cout << "Base::f() " << endl;
return this;
}
};
class Derived : public Base
{
public:
Derived* f(Base&)
{ cout << "Derived::f()" << endl;
return this;
}
};
void main(void)
{
Derived d;
Base *pb = &d;
pb->f(d); // 结果 :Derived::f()
d.f(d);//结果:Derived::f()
}