C++试题(继承)

2025-04-09 01:42:00
推荐回答(4个)
回答1:

#include
#include
#include
using namespace std;
class Employee{
public:
Employee(char *,int,int,char *);
void printOn();
static int count(); //调用静态成员的函数也必须是静态函数
char *name;
int age;
int worktime;
char *department;
static int n;
/*~Employee(){
delete name;
delete department;
}*/ //使用该析构函数会抱内存错
};
int Employee::n=0;
Employee::Employee(char *name,int age,int worktime,char *department){
this->name=name;
this->age=age;
this->worktime=worktime;
this->department=department;
n++;
}
void Employee::printOn(){
cout<<"This is "< <<"age "< <<"year "< <<"Dept "< }
int Employee::count(){
return n;
};
class Manager:public Employee{
public:
Manager(char *,int,int,char *,int);
Manager& addMember(Employee *);
void printOn();
private:
static int m;
int level;
char *member[10];
};
int Manager::m=0;
Manager::Manager(char *name,int age,int worktime,char *department,int level):Employee(name,age,worktime,department){
this->level=level;
}
Manager& Manager::addMember(Employee *e){
member[m++]=e->name;
return *this;
}
void Manager::printOn(){
Employee::printOn();
cout<<"Level: "< <<"Members: ";
for(int i=0;i cout< cout< }
int main(){
Employee e1("Jack", 24, 2, "Development");
Employee e2("Susan", 28, 4, "Development");
Manager m("Tom", 30, 2, "Development", 2);
m.addMember(&e1).addMember(&e2);
e1.printOn(); // display all data member information of Jack
e2.printOn(); // display all data member information of Susam
m.printOn(); // display all data member information of Tom
cout << "Total " << Employee::count();
cout<< " employee's object created." << endl;
system("pause");
return 0;
}
--------------------------------------------------------------
帅哥,这么简单的问题还放在百度知道问?还100个积分呐,你直接在QQ上问我不就得了??楼上那几位蜀黍的答案明显不能抄,你抄了老师肯定确定不是你自己编的。我刚申了个百度号,分给我吧。

回答2:

#include
using namespace std;
/*
公司中有两类人员:一般雇员(Employee)和经理(Manager)。
每位雇员都有各自的基本信息,包括姓名、年龄、工龄、部门名称。
每位经理除了具有这些基本信息外,还具有另外两个信息:
职务级别、他所管辖的雇员信息。请设计并实现两个类,分别表示雇
员和经理两类人员,并满足以下程序给出的运行结果(注意:经理也是雇员)。
*/
class Employee
{
char* _xm;
int _nl;
int _gl;
char* _bm;
static int _n;
public:
void getXm(char*&);
Employee(char*, int, int, char*);
virtual ~Employee();
virtual void printOn();
static int count();
};
void Employee::getXm(char*& xm)
{
strcpy(xm,_xm);
}
int Employee::_n=0;
Employee::Employee(char* xm,int nl, int gl, char* bm)
{
++_n;
_xm=new char[strlen(xm)+1];
strcpy(_xm, xm);
_nl=nl;
_gl=gl;
_bm=new char[strlen(bm)+1];
strcpy(_bm, bm);
}
Employee::~Employee()
{
if(_xm!=NULL)
delete [] _xm;
if(_bm!=NULL)
delete [] _bm;
}
void Employee::printOn()
{
cout<<"This is "<<_xm<<": "< cout<<"age: "<<_nl< cout<<"Year: "<<_gl< cout<<"Dept: "<<_bm<}
int Employee::count()
{
return _n;
}

class Manager : public Employee
{
int _dj;
char* _gyxx;
public:
Manager(char*, int, int, char*, int);
virtual ~Manager();
void printOn();
Manager& addMember(Employee*);
};
Manager::Manager(char* xm, int nl, int gl, char* bm,int dj)
:Employee(xm, nl, gl, bm)
{
_gyxx=NULL;
_dj=dj;
}
Manager::~Manager()
{
if(_gyxx!=NULL)
delete [] _gyxx;
}
void Manager::printOn()
{
Employee::printOn();
cout<<"Level: "<<_dj< cout<<"Members: "<<_gyxx<}
Manager& Manager::addMember(Employee* e)
{
char* a=new char[50];
e->getXm(a);
if(_gyxx!=NULL)
{

char* t=new char[strlen(_gyxx)+1];
strcpy(t, _gyxx);
delete [] _gyxx;
_gyxx=new char[strlen(t)+strlen(a)+6];
strcpy(_gyxx, t);
strcat(_gyxx, " ");
strcat(_gyxx, a);
delete [] t;
}
else
{
_gyxx= new char[strlen(a)+1];
strcpy(_gyxx, a);
}
delete [] a;
return *this;
}

int main()
{
Employee e1("Jack", 24, 2, "Development");
Employee e2("Susan", 28, 4, "Development");
Manager m("Tom", 30, 2, "Development", 2);
m.addMember(&e1).addMember(&e2);
e1.printOn(); // display all data member information of Jack
e2.printOn(); // display all data member information of Susam
m.printOn(); // display all data member information of Tom
cout << "Total " << Employee::count();
cout<< " employee’s object created." << endl;
return 0;
}

回答3:

//VC编译通过.输出完全一样.

#include
#include
using namespace std;
class Employee
{
private:
char eName[20];//姓名
int eAge;//年龄
int eWorkAge;//工龄
char eDepName[20];//部门名称
static int eCount;
public:
Employee(char *name,int age,int year,const char *dep="Development")
{
strcpy(eName,name);
strcpy(eDepName,dep);
eAge=age;
eWorkAge=year;
eCount++;
}
~Employee()
{
eCount--;
};
char *name(){return eName;}
void printOn()
{
cout<<"This is "< cout<<"age: "< cout<<"Year: "< cout<<"Dept: "<}
int count(){return eCount;}
};
int Employee::eCount=0;
class Manager:public Employee
{
private:
int level;//职务级别
char *inCharge;
public:
Manager(char *name,int age,int year,const char *dep="Development",int lv=2):Employee(name,age,year,dep)
{
level=lv;
inCharge=NULL;
}
~Manager()
{
if(inCharge!=NULL) delete inCharge;
}
void printOn()
{
Employee::printOn();
cout<<"level: "< cout<<"Members: "<
}

int addMember(Employee* Member)
{

int len1=inCharge==NULL?0:strlen(inCharge);
int len2=strlen(Member->name());
char *p=new char[len1+len2+2];
if(inCharge!=NULL) strcpy(p,inCharge);

p[len1]=' ';
strcpy(p+len1+1,Member->name());
if(inCharge!=NULL) delete inCharge;
inCharge=p;

return 1;
}

};

int main()
{
Employee e1("Jack", 24, 2, "Development");
Employee e2("Susan", 28, 4, "Development");
Manager m("Tom", 30, 2, "Development", 2);

m.addMember(&e1);
m.addMember(&e2);

e1.printOn();// display all data member information of Jack
e2.printOn();// display all data member information of Susam
m.printOn();// display all data member information of Tom
cout << "Total" << e1.count();
cout<< "employee’s object created." << endl;

return 0;
}

回答4:

//经测试完全正确

#include
#include
class Employee
{
public:
Employee(char *n,int a,int y,char *d):age(a),year(y)
{
strcpy(name,n);
strcpy(Dept,d);
iCount++;
}
virtual void printOn()
{
cout<<"This is "< <<"Age: "< <<"Year: "< <<"Dept: "< }
char* GetName(){return name;}
char* GetDept(){return Dept;}
static int count(){return iCount;}
private:
char name[20];
int age;
int year;
char Dept[20];
static int iCount;
};
int Employee::iCount=0;
class Manager : public Employee
{
public:
Manager(char *n,int a,int y,char *d,int l):Employee(n,a,y,d),Level(l){Members=NULL;}
void printOn()
{
Employee::printOn();
cout<<"Level: "< cout<<"Members: "< }
int addMember(Employee* M)
{

int len1=Members==NULL?0:strlen(Members);
int len2=strlen(M->GetName());
char *p=new char[len1+len2+2];
if(Members!=NULL) strcpy(p,Members);

p[len1]=' ';
strcpy(p+len1+1,M->GetName());
if(Members!=NULL) delete Members;
Members=p;
return 1;
}
private:
int Level;
char *Members;
};

int main()
{
Employee e1("Jack", 24, 2, "Development");
Employee e2("Susan", 28, 4, "Development");
Manager m("Tom", 30, 2, "Development", 2);
m.addMember(&e1);
m.addMember(&e2);
e1.printOn();
e2.printOn();
m.printOn();
cout << "Total: " << Employee::count()<cout<< "employee's object created."<< endl;
return 0;
}