#include<iostream>
using namespace std;
class Base
{
public:
virtual void Who()=0;
};
class FirstDerived:public Base
{
public:
void Who(){cout<<"F";}
} ;
class SecondDerived:public Base
{
public:
void Who(){cout<<"S";}
} ;
int main()
{
FirstDerived first_obj;
SecondDerived second_obj;
Base &bref=first_obj;
bref.Who();
bref=second_obj;
bref.Who();
Base *bp;
bp=&first_obj;
bp->Who();
bp=&second_obj;
bp->Who();
return 0;
}
运行结果:
程序分析:
用派生类对象初始化基类对象的引用
bref只能用来访问派生类对象中从基类继承来的成员,bref是基类引用指向派生类,如果基类中有虚函数并在派生类中重写了这个函数,那就可以通过bref产生多态效果