weixin_58578525 2021-05-24 16:53 采纳率: 50%
浏览 1110
已采纳

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

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

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2021-05-24 17:32
    关注
    #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;
    
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?