#include <iostream>
using namespace std;
class Base {
public:
virtual void fun() { cout << "I am base" << endl; }
};
class Derived :public Base {
public:
void fun() override { cout << "I am derived" << endl; }
};
void FunRef(Base &base) {
base.fun();
}
void FunCopy(Base base) {
base.fun();
}
void FunPt(Base *base) {
base->fun();
}
int main()
{
Base *base = new Derived();
FunCopy(*base);
FunRef(*base);
FunPt(base);;
delete base;
system("pause");
return 0;
}
输出:
I am base
I am derived
I am derived