求一个C++定义的Student类 不会做。。。
创建学生类(classStudent),要求能根据学生创建的顺序自动编号,并自动统计目前学生总数。一、数据成员(私有)1.姓名:char*name;2.学生编号:inti...
创建学生类(class Student),要求能根据学生创建的顺序自动编号,并自动统计目前学生总数。
一、数据成员(私有)
1. 姓名:char*name;
2. 学生编号:intid;
3. 学生总数:staticint count;
4. 累计编号:staticint NEXTID;
二、静态成员初始化:
count初始化为0,NEXTID初始化为1001
三、函数成员(公开)
1.无参构造函数:初始化指针为0,学生总数count加1,用NEXTID为id赋值,NEXTID自增
2. 析构函数:判断是否有堆空间存在,使用delete释放已有堆空间,学生总数减1
3. 设置对象姓名:SetName,判断堆空间是否存在,如果存在,使用delete释放已有堆空间,根据参数长度开辟堆空间,用name保存堆空间地址,并完成堆空间赋值操作
4. 返回目前对象总数:GetCount,返回学生总数
5. 对象信息输出函数Print:输出当前学生的姓名和编号
求问这个类到底应该怎么写啊??
求回答!对的话加悬赏哈! 展开
一、数据成员(私有)
1. 姓名:char*name;
2. 学生编号:intid;
3. 学生总数:staticint count;
4. 累计编号:staticint NEXTID;
二、静态成员初始化:
count初始化为0,NEXTID初始化为1001
三、函数成员(公开)
1.无参构造函数:初始化指针为0,学生总数count加1,用NEXTID为id赋值,NEXTID自增
2. 析构函数:判断是否有堆空间存在,使用delete释放已有堆空间,学生总数减1
3. 设置对象姓名:SetName,判断堆空间是否存在,如果存在,使用delete释放已有堆空间,根据参数长度开辟堆空间,用name保存堆空间地址,并完成堆空间赋值操作
4. 返回目前对象总数:GetCount,返回学生总数
5. 对象信息输出函数Print:输出当前学生的姓名和编号
求问这个类到底应该怎么写啊??
求回答!对的话加悬赏哈! 展开
2个回答
展开全部
#include "Student.h"
#include <string.h>
class CStudent
{
public:
CStudent(void);
~CStudent(void);
private:
char*name;
intid;
static intcount;
static intNEXTID;
public:
void SetName(const char* pName);
static int GetCount(void);
void Print(void);
};
intCStudent::count = 0;
intCStudent::NEXTID = 1001;
CStudent::CStudent(void):name(NULL)
{
id = NEXTID++;
++count;
}
CStudent::~CStudent(void)
{
delete name;
--count;
}
void CStudent::SetName(const char* pName)
{
if(NULL == pName)
return;
if(NULL != name)
{
delete name;
}
else
{
name = new char[strlen(pName) + 1];
strcpy(name, pName);
}
}
int CStudent::GetCount(void)
{
return count;
}
void CStudent::Print(void)
{
printf("Name:%s ID:%d \n", name, id);
}
#include <string.h>
class CStudent
{
public:
CStudent(void);
~CStudent(void);
private:
char*name;
intid;
static intcount;
static intNEXTID;
public:
void SetName(const char* pName);
static int GetCount(void);
void Print(void);
};
intCStudent::count = 0;
intCStudent::NEXTID = 1001;
CStudent::CStudent(void):name(NULL)
{
id = NEXTID++;
++count;
}
CStudent::~CStudent(void)
{
delete name;
--count;
}
void CStudent::SetName(const char* pName)
{
if(NULL == pName)
return;
if(NULL != name)
{
delete name;
}
else
{
name = new char[strlen(pName) + 1];
strcpy(name, pName);
}
}
int CStudent::GetCount(void)
{
return count;
}
void CStudent::Print(void)
{
printf("Name:%s ID:%d \n", name, id);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询