#include<stdlib.h>
#include<string.h>
#include<iostream.h>
#include<time.h>
const char null='/0';
class Base
{
protected:
char *name;
int age;
char * id_number;
public:
Base();//无参构造函数
Base(char *name1,int age1,char * id_number1);//带参构造函数
~Base();//析构函数
void display();
};
Base::Base()//无参构造函数的实现
{
name=NULL;
age=0;
id_number=NULL;
}
Base::Base(char *name1,int age1,char * id_number1)//带参数构造函数的实现
{
name=new char[strlen(name1)+1];//动态申请内存单元
name=strcpy(name,name1);
age=age1;
id_number=new char[strlen(id_number1)+1];//动态申请内存单元
id_number=strcpy(id_number,id_number1);
}
Base::~Base()
{
delete[]name;//释放用NEW分配的内存单元
delete[]id_number;
}
void Base::display()//基类函数display的实现
{
cout<<"name:"<<name<<endl;
cout<<"age:"<<age<<endl;
cout<<"id_number:"<<id_number<<endl;
}
class Student: virtual public Base//声明派生类Student
{
protected:
char *major;
long int s_number;
int level;
public:
Student(char *name1,int age1,char *id_number1,char *major1,
long int s_number1,int level1):Base(name1,age1,id_number1)
{
major=new char[strlen(major1)+1];
major=strcpy(major,major1);
s_number=s_number1;
level=level1;
}
~Student();
void display();
};
Student::~Student()
{
delete[]major;
}
void Student::display()//派生类Student的函数display的实现
{
Base::display();
cout<<"major:"<<major<<endl;
cout<<"s_number:"<<s_number<<endl;
cout<<"level:"<<level<<endl;
}
class Employee: virtual public Base//声明派生类Employee
{
protected:
char *dept;
double salary;
public:
Employee(char *name1,int age1,char * id_number1,char *dept1,
double salary1):Base(name1,age1,id_number1)
{
dept=new char[strlen(dept1)+1];
dept=strcpy(dept,dept1);
salary=salary1;
}
~Employee()
{
delete[]dept;
}
void display();
};
void Employee::display()//派生类Employee的函数display的实现
{
Base::display();
cout<<"Department:"<<dept<<endl;
cout<<"salary:"<<salary<<endl;
}
class Teacher: virtual public Employee//声明派生类Teacher
{
protected:
char * title;
public:
Teacher(char *name1,int age1,char *id_number1,char *dept1,
double salary1,char *title1):Base(name1,age1,id_number1),
Employee(name1,age1,id_number1,dept1,salary1)
{
title=new char[strlen(title)+1];
title=strcpy(title,title1);
}
~Teacher()
{
delete[]title;
}
void display();
};
void Teacher::display()//派生类Teacher的函数display的实现
{
Employee::display();
cout<<"title:"<<title<<endl;
}
class Graduate:public Employee,public Student//声明派生类Graduate
{
public:
Graduate(char *name1,int age1,char *id_number1,
char *major1,long int s_number1,int level1,
char *dept1,double salary1):
Base(name1,age1,id_number1),Employee(name1,age1,id_number1,dept1,salary1),
Student(name1,age1,id_number1,major1,s_number1,level1){}
void display();
};
void Graduate::display()//派生类Graduate的函数display的实现
{
Student::display();
cout<<"Department:"<<dept<<endl;
cout<<"salary:"<<salary<<endl;
}
void main()
{
Student s1("Wangwei",20,"010323650718123",
"Computer Science",30516568,4);
Employee E1("ZhangHua",28,"010436505031238",
"Electrical Engineering",2800);
Teacher t1("Chan Wei",38,"010234670607126",
"Computer Science",3500,"professor");
Graduate g1("Li Ming",36,"010123690918128",
"Computer Science",206678,3,"Electrical Engineering",3600);
s1.display();
cout<<endl;
E1.display();
cout<<endl;
t1.display();
cout<<endl<<endl;
g1.display();
}
出现应用程序错误!!