问题及代码:
/*
*Copyright (c) 2015,烟台大学计算机学院
*All rights reserved.
*文件名称:text.cpp
*作者:徐健
*完成日期:2015年23日
*版本号:v1.0
*
*问题描述: 阅读程序,写出运行结果
*输入描述: 无
*程序输出: 测试结果
*/
#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;
}
运行结果:
知识点总结:
声明为引用时,必须同时对它进行初始化,使它指向一个已存在的对象一旦一个引用被初始化后,就不能改为指向其他对象抽象类不能实例化,即不能定义一个抽象类的对象,但是可以定义一个抽象类的指针和引用。通过指针或引用,就可以指向并访问派生类的对象,进而访问派生类的成员。这种访问是具有多态的特征的。