/*
02.02.*烟台大学计算机学院学生
03.03.*All right reserved.
04.04.*文件名称*烟台大学计算机学院学生
05.05.*All right reserved.
06.06.*文件名称:例题熟悉(虚基类的简单应用举例)
07.07.*作者:王洪海
08.08.*完成日期:2013年5月20日
09.09.*版本号:v1.0
10.10.*对任务及求解方法的描述部分:例题熟悉(虚基类的简单应用举例)
11.11.*我的程序:
12.12.*/
#include <iostream>
#include <string>
using namespace std;
//声明公用基类Person
class Person
{
public:
Person(string nam,char s,int a)
{name=nam;sex=s;age=a;}
protected:
string name;
char sex;
int age;
};
//声明基类Person的直接派生类Teacher
class Teacher:virtual public Person //声明person为公用继承的虚基类
{
public:
Teacher (string nam,char s,int a,string t):Person (nam,s,a)
{
title=t;
}
protected:
string title;
};
//声明Person的直接派生类Student
class Student:virtual public Person
{
public:
Student (string nam,char s,int a,float sco):
Person(nam,s,a),score(sco){}
protected:
float score;
};
//声明多重继承的派生类Graduate
class Graduate:public Teacher ,public Student
{
public:
Graduate(string nam,char s,int a,string t,float sco,float w):
Person(nam,s,a),Teacher(nam,s,a,t),Student(nam,s,a,sco),wage(w){}
void display()
{
cout<<"name:"<<name<<endl;
cout<<"age:"<<age<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"score:"<<score<<endl;
cout<<"title:"<<title<<endl;
cout<<"wage:"<<wage<<endl;
}
private:
float wage;
};
int main()
{
Graduate grad1("wang_li",'f',24,"assistant",89.5,1200);
grad1.display();
return 0;
}
运行结果,如下图: