定义带参数的构造函数,为三个成员赋值,定义转换构造函数,将整型变量转成学生类的学号,重载赋值运算符函数,实现两个对象之间的赋值工作,定义类类型转换函数,将学生类的学号转换为整型数据后输出,实现两个学生之间学号的相减运算
#include <stdlib.h>
#include <string.h>
class temp{
private:
char *pStuNo;
char *pPro;
char *pName;
public:
char * GetStuNo() { return pStuNo; }
char * GetPro() { return pPro; }
char * GetName() { return pName; }
int GetStuNoInt() { return atoi(pStuNo); }
temp() { pStuNo = NULL; pPro = NULL; pName = NULL; }
temp(char *stuno,char *pro,char *name)
{
pStuNo = new char[strlen(stuno)+1];
memset(pStuNo, 0, strlen(stuno) + 1);
memcpy(pStuNo, stuno, strlen(stuno));
//
pPro = new char[strlen(pro) + 1];
memset(pPro, 0, strlen(pro) + 1);
memcpy(pPro, stuno, strlen(pro));
//
pName = new char[strlen(name) + 1];
memset(pName, 0, strlen(name) + 1);
memcpy(pName, stuno, strlen(name));
}
void Clear()
{
if (pStuNo != NULL)
{
delete[]pStuNo;
pStuNo = NULL;
}
if (pPro != NULL)
{
delete []pPro;
pPro = NULL;
}
if (pName != NULL)
{
delete []pName;
pName = NULL;
}
}
~temp() { Clear(); }
temp operator = (temp &t)
{
Clear();
pStuNo = new char[strlen(t.GetStuNo())+1];
strcpy(pStuNo, t.GetStuNo());
//
pPro = new char[strlen(t.GetPro()) + 1];
strcpy(pStuNo, t.GetPro());
//
pName = new char[strlen(t.GetName()) + 1];
strcpy(pStuNo, t.GetName());
return *this;
}
int StuNoDeff(temp &t1, temp &t2)
{
return t1.GetStuNoInt() - t2.GetStuNoInt();
}
};
int main()
{
temp t("20210211","COMPUTER","LIMING");
temp t1 = t;
temp t2("20210293", "ENGLISH", "ZHANGSAN");
int n = t.StuNoDeff(t1, t2);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
意思就是学号其实是数字型式呗。