c++构造函数中动态申请内存,在析构函数中释放内存
输入姓名的时候出现错误 求助!!!!
#include<iostream>
#include<string.h>
using namespace std;
class employee
{ protected:
char *name;
int number;
int sallary;
public:
employee();
employee(char *newname,int newnumber);
virtual void pay();
virtual void print();
~employee();
};
employee::employee()
{
this->name="xxx";
this->number=0;
this->sallary=0;
}
employee::employee(char *newname,int newnumber){
name=new char [strlen(newname)+1];
strcmp(name,newname);
number=newnumber;
}
void employee::pay()
{
sallary=0;
}
void employee::print()
{
cout<<"name="<<name<<",NO="<<number<<endl;
}
employee::~employee()
{
delete [] name;
}
class salesman:public employee
{ private:
float rate,sale;
public:
salesman();
salesman(char* name,int number,float rate,int sale):employee(name,number)
{
this->rate=rate;
this->sale=sale;
}
void print();
void pay();
};
salesman::salesman()
{
this->sale=0;
this->rate=0;
}
void salesman::pay()
{
sallary=rate*sale;
}
void salesman::print()
{
cout<<"name="<<name<<",NO="<<number<<",wages="<<sallary<<",rate="<<rate<<",sales="<<sale<<endl;
}
class tech:public employee
{
private:
float hours,rate;
public :
tech();
tech(char *name,int number,int hours,int rate):employee(name,number){
this->hours=hours;
this->rate=rate;
};
void pay();
void print();
};
tech::tech()
{
this->hours=0;
this->rate=0;
}
void tech::pay()
{
sallary=hours*rate;
}
void tech::print()
{
cout<<"name="<<name<<",NO="<<number<<",wages="<<sallary<<",hourRate="<<rate<<",workHours="<<hours<<endl;
}
void fun(employee& ref)
{
ref.pay();
ref.print();
cout<<endl;
}
int main()
{
char name[10];
int NO;
float rate, sales;
cin>>name>>NO>>rate>>sales;
salesman s(name,NO,rate,sales);
float hourRate,workHours;
cin>>name>>NO>>hourRate>>workHours;
tech t(name,NO,hourRate,workHours);
fun(s);
fun(t);
return 1;
}