该程序可以管理大学的几类人员:学生(student)教员(faculty)教授(professor)。
类层次如下:
person派生student和faculty,faculty派生professor,studentfaculty 继承了sutdent和faculty。
由于studentfaculty类是合并了两个类的概念建立起来的,而这两个类又由同一个类派生而来,所以考虑继承时把person说明为虚基类。防止studentfaculty两次构造person的数据成员。
#include<iostream.h>
#include<string.h>
char *copy(char *s)
{
char *temp=new char[strlen(s)+1];
strcpy(temp,s);
return temp;
}
class person
{
protected:
char* name;
int age;
person() //保护的构造函数在建立该类的对象时不能被调用,以防止该类的对象被不正确初始化。
{
name=0;
age=0;
}
person(char *n,int a):name(copy(n)),age(a)
{}
~person()
{
delete name;
}
};
class student:virtual public person
{
private:
char *major;
protected: