|
|
#12
一旋无风2009-11-14 01:40
如过不用string.h的话,就按下面的来
#include <iostream>
#include<cstring>
using namespace std;
class base
{
public:
base(int a,char* na)
{
age=a;
name=new char[strlen(na)+1];//注意这里,下同
strcpy (name,na);
}
~base(){delete[] name;}
virtual void display()=0;
protected:
int age;
char* name;
};
class leader:virtual public base
{
public:
leader(int a,char* na,char* zhi,char* dep):base(a,na)
{
zhiwei=new char[strlen(zhi)+1];
strcpy (zhiwei,zhi);
depart=new char[strlen(dep)+1];
strcpy (depart,dep);
}
~leader(){delete[] zhiwei,depart;}
void display()
{
cout<<"姓名 "<<name<<" 年龄 "<<age<<" 职位 "<<zhiwei<<" 部门 "<<depart<<endl;
}
protected:
char* zhiwei;
char* depart;
};
class engineer:virtual public base
{
public:
engineer(int a,char* na,char* zhic,char* car):base(a,na)
{
zhicheng=new char[strlen(zhic)+1];
strcpy (zhicheng,zhic);
career=new char[strlen(car)+1];
strcpy(career,car);
}
void display()
{
cout<<"姓名 "<<name<<" 年龄 "<<age<<" 职称 "<<zhicheng<<" 职业 "<<career<<endl;
}
~engineer(){delete[]zhicheng,career;}
protected:
char* zhicheng;
char* career;
};
class chairman:public leader, public engineer
{
public:
chairman(int a,char* na,char* zhi,char* dep,char* zhic,char* car):base(a,na),leader(a,na,zhi,dep),engineer(a,na,zhic,car){}
void display()
{
cout<<"姓名 "<<name<<" 年龄 "<<age<<" 职称 "<<zhicheng<<" 职业 "<<career<<" 职位 "<<zhiwei<<" 部门 "<<depart<<endl;
}
};
void main()
{
leader L(28,"三弟","书记","团委");
L.display();
engineer e(29,"二哥","助教","电子工程");
e.display();
chairman c(40,"一哥","主任","电子工程","教授","办公室");
c.display();
}
|