资源描述
1. 定义一个学生类(student),属性包括学号(sno),姓名(sname)和年龄(sage),以及一个静态成员学生数(snum),
要求:
a) 能够通过构造函数和拷贝构造函数对学生初始化和学生个数累加,
b) 能够通过析构函数实现学生个数递减,
c) 构造函数要求带默认形参,默认形参值,学号为“000”,姓名为“NoName”,年龄为0。
d) 拷贝构造函数要求实现深拷贝,
e) 能够用一个函数输出学生的所有属性,
f) 能够分别得到学生的各个属性,
g) 能够用一个函数设置学生的各个属性,
h) 写出主程序,使用student类。
class student
{
public:
student(char *sno1="000",char * sname1="NoName",int sage1=0)
{
sno = new char[8];
sname = new char[8];
strcpy(sno,sno1);
strcpy(sname,sname1);
sno = sno1;
sname = sname1;
sage = sage1;
SNum ++; }
student(student & s)
扣一分
{
sno = new char[]; //没有实现深拷贝扣两分
sname = new char[];
strcpy(sno,s.sno);
strcpy(sname,s.sname);
sage = s.sage;
SNum ++; //没有 SNum ++;扣一分
}
~student() //析构函数不正确扣一分
{
SNum--; //没有 SNum --;扣一分
delete sno;
delete sname;
}
char *GetSno() // 函数不正确扣一分
{ return sno; }
char *GetSname() // 函数不正确扣一分
{ return sname; }
int GetSage() // 函数不正确扣一分
{
return sage;
}
void Set(char *sno1,char * sname1,int sage1) // 函数不正确扣一分
{
sno = new char[8];
sname = new char[8];
strcpy(sno,sno1);
strcpy(sname,sname1);
sno = sno1;
sname = sname1;
sage = sage1;
}
void show() // 函数不正确扣一分
{
cout<<"学号:"<<sno<<"姓名:"<<sname<<"年龄:"<<sage<<"学生
数:"<<SNum<<endl;
}
private:
char * sno,* sname;
int sage;
static int SNum; // 静态成员不正确扣一分
};
int student::SNum = 0; // 初始化不正确扣一分
void main()
{
student s1("001","tom",25); //主函数不正确扣两分
student s2(s1);
s2.Set("002","Jack",25);
s1.show();
s2.show();
}
展开阅读全文