C++ 类,对象,构造函数,析构函数的实验。

1、定义学生类Student,包含两个私有数据成员:名字 char*name和年龄int year;设计该类的构造函数和析构函数。
2、利用定义的Student类实例化两个对象;(1)对象名为zhangsan,该学生的名字为“张三”,年龄为18;(2)对象名为lisi,名为“李四”,年龄19,显示这两个对象的属性(名字,对象)。
3、重新设计Student类添加构造函数Student,使下面定义合法:
Student zhangsan(“张三”);
Student lisi(“李四”,19);
Student wangwu; //考查构造函数的重载
Student xiaozhang=zhangsan; //考查拷贝构造函数的设计与试用
4、为该类添加公有成员函数:设置姓名的函数SetName、设置年龄的函数SetYear、显示姓名和年龄的函数Show。要求成员函数在类外定义
5、在main函数中对上述设计进行测试

大神救命啊,好难。

//代码如下 头文件请自行查询
class Student
{
public:
Student(){
name = NULL;
year = 0;
}
~Student(){
if(name!=NULL){
delete[]name;
name = NULL;
}
}
Student(const char* sName){
name = NULL;
size_t len = strlen(sName);
if(len>0){
name = new char[len+1];
memset(name,0,len+1);
memcpy(name,sName,len);
}
year = 0;
}
Student(const char* sName,int nYear)
{
name = NULL;
size_t len = strlen(sName);
if(len>0){
name = new char[len+1];
memset(name,0,len+1);
memcpy(name,sName,len);
}
year = nYear;
}
Student(const Student& stu)
{
name = NULL;
if(stu.name){
size_t len = strlen(stu.name);
if(len>0){
name = new char[len+1];
memset(name,0,len+1);
memcpy(name,stu.name,len);
}
}
year = stu.year;
}
Student& operator=(const Student& stu)
{
if(name!=NULL){
delete name;
name = NULL;
}
if(this!=&stu){
if(stu.name){
size_t len = strlen(stu.name);
if(len>0){
name = new char[len+1];
memset(name,0,len+1);
memcpy(name,stu.name,len);
}
}
year = stu.year;
}
return *this;
}
void SetName(const char* sName)
{
size_t len = strlen(sName);
if(len>0){
if(name!=NULL){
delete name;
name = NULL;
}
name = new char[len+1];
memset(name,0,len+1);
memcpy(name,sName,len);
}
}
void SetYear(int nYear)
{
year = nYear;
}
void Show(){
printf("%s year %d\n",name,year);
}
private:
char* name;
int year;
};

int main()
{
Student zhangsan("张三");
Student lisi("李四",19);
Student wangwu;
zhangsan.SetYear(18);
zhangsan.Show();
lisi.Show();
wangwu.Show();
Student xiaozhang=zhangsan;
xiaozhang.Show();
return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答