问题及代码:
/*
*Copyright (c) 2015,烟台大学计算机学院
*All rights reserved.
*文件名称:text.cpp
*作者:徐健
*完成日期:2015年23日
*版本号:v1.0
*
*问题描述: 阅读程序,写出运行结果
*输入描述: 无
*程序输出: 测试结果
*/
#include <iostream>
using namespace std;
class A
{
int a;
public :
A():a(5){}
virtual void print()const {cout<<a;}
};
class B:public A
{
char b;
public :
B(){b='E';}
void print()const {cout<<b;}
};
void show(A &x){x.print();}
int main()
{
A d1,*p;
B d2;
p=&d2;
d1.print();
d2.print();
p->print();
show(d1);
show(d2);
return 0;
}
运行结果
知识点总结:
如果需要通过基类的指针指向派生类的对象,并访问某个与基类同名的成员,那么首先在基类中将这个同名函数说明为虚函数,这样,通过基类类型的指针,就可以使属于不同派生类的不同对象产生不同的行为,从而实现运行过程的多态。