/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 《虚函数——用基类指针访问派生类中的成员函数》
* 作 者: 刘江波
* 完成日期: 2012 年 7 月 3 日
* 版 本 号: v.73
* 对任务及求解方法的描述部分
* 问题描述:
基类与派生类中有相同的成员函数,通过基类指针来调用相同的成员函数
* 程序头部的注释结束
*/
#include<iostream>
#include<string>
using namespace std;
class Student//声明基类
{
public:
Student(int,string,float);
virtual void display();//声明虚函数
protected:
int num;
string name;
float score;
};
Student::Student(int n,string nam,float s)
{
num = n;
name = nam;
score = s;
}
void Student:: display()
{
cout << "nam:" << num << "\nname:" << name << "\nscore:" << score << "\n\n";
}
class Graduate:public Student//声明派生类
{
public:
Graduate(int,string,float,float);
void display();
private:
float pay;
};
void Graduate::display()
{
cout << "nam:" << num << "\nname:" << name << "\nscore:" << score << "\npay:" << pay <<"\n\n";
}
Graduate::Graduate(int n,string nam,float s,float p):Student(n,nam,s),pay(p){ }
int main()
{
Student stud1(1001,"li",100);
Graduate grad1(2001,"liujiangbo",100,10000);
Student *pt = &stud1;//定义基类指针
pt -> display();
pt = &grad1; //用基类指针指向派生类的成员函数
pt -> display();
system("PAUSE");
return 0;
}
总结使用方法:
1、在基类中定义虚函数
2、在派生类中通过函数覆盖定义与基类函数同名的函数
3、定义基类指针
4、用基类指针调用派生类的成员函数