//本类仅供参考
#include
using namespace std;
class Teacher;
class Teacher
{
public:
Teacher(int num,const char* name,int age)
{
assert(num>=0);
assert(name);
assert(age>=0&&age<=200);
this->num=num;
int len=this->str_len(name);
this->name=new char[len+1];
str_copy(this->name,name);
this->age=age;
}
Teacher(const Teacher& teacher)
{
this->num=teacher.num;
assert(teacher.name);
int len=this->str_len(teacher.name);
this->name=new char[len+1];
this->str_copy(this->name,teacher.name);
this->age=teacher.age;
}
virtual~Teacher()
{
if(this->name)
delete this->name;
this->name=NULL;
}
Teacher& operator=(const Teacher& teacher)
{
if(this!=&teacher)
{
this->num=teacher.num;
assert(teacher.name);
if(this->name)
delete this->name;
int len=this->str_len(teacher.name);
this->name=new char[len+1];
this->str_copy(this->name,teacher.name);
this->age=teacher.age;
}
return *this;
}
public:
void setNum(int num)
{
assert(num>=0);
this->num=num;
}
void setAge(int age)
{
assert(age>=0&&age<=200);
this->age=age;
}
void setName(const char* name)
{
assert(name);
if(this->name)
delete this->name;
int len=this->str_len(name);
this->name=new char[len+1];
this->str_copy(this->name,name);
}
int getAge()const
{
return this->age;
}
int getNum()const
{
return this->num;
}
const char* getName()const
{
return this->name;
}
void showTeacherInfo()const
{
cout<<"工号:"<
private:
int str_len(const char* src)
{
assert(src);
int len=0;
while(*src++&&++len);
return len;
}
void str_copy(char* dest,const char* src)
{
assert(src);
while(*dest++=*src++);
}
private:
int num;
char* name;
int age;
};
void main()
{
Teacher WangWei(201,"王伟",35);
Teacher LiHua(WangWei);
LiHua.setNum(202);
LiHua.setName("李华");
WangWei.showTeacherInfo();
cout<<"-------------我是分割线----------------"<
}
struct teacher
{int num;
char name[20];
int age;}teacher1;
姓名 最好用 字符数组 你邮箱多少??