用c++定义一个学生类,该类含学号,姓名,专业,三个私有成员,全部设置为字符指针变量

定义带参数的构造函数,为三个成员赋值,定义转换构造函数,将整型变量转成学生类的学号,重载赋值运算符函数,实现两个对象之间的赋值工作,定义类类型转换函数,将学生类的学号转换为整型数据后输出,实现两个学生之间学号的相减运算

#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

意思就是学号其实是数字型式呗。