用类的组合技术,设计一个基本信息类、一个学生类、一个教师类。基本信息类包括姓名、性别、手机号、班级;学生类包括姓名、性别、手机号、班级、数学、语文和英语等成绩;教师类包括姓名、性别、手机号、班级、专业、教龄等。以上三个类必须包含构造函数,其他成员函数自行设计。主函数中,至少分别生成一个学生类和一个教师类对象,并调用相关函数输出其基本信息。
下面代码实现了一个基础信息类给你参考一下,如果有用请采纳!
#include <iostream>
#include<string.h>
using namespace std;
class BaseIMG
{
public:
BaseIMG(const char* str1,const char* str2,const char* str3,const char* str4)
{
m_name = func1(str1);
m_sex = func1(str2);
m_nums = func1(str3);
m_class = func1(str4);
}
BaseIMG(const BaseIMG& img)
{
m_name = func1(img.m_name);
m_sex = func1(img.m_sex);
m_nums = func1(img.m_nums);
m_class = func1(img.m_class);
}
~BaseIMG()
{
m_name = func2(m_name);
m_sex = func2(m_sex);
m_nums = func2(m_nums);
m_class = func2(m_class);
}
char* getname()
{
return m_name;
}
char* getsex()
{
return m_sex;
}
char* getnums()
{
return m_nums;
}
char* getclass()
{
return m_class;
}
private:
char* func1(const char* ch)
{
char* temp;
if(ch==nullptr)
{
temp = new char[1];
*temp = '\0';
}else{
int len = strlen(ch);
temp = new char[len+1];
strcpy(temp,ch);
}
return temp;
}
char* func2(char* ch)
{
if(!ch)
delete[] ch;
return nullptr;
}
private:
char* m_name;
char* m_sex;
char* m_nums;
char* m_class;
};
int main(){
BaseIMG test1("小明","男","123456789","三年A班");
cout<<test1.getclass()<<endl;
cout<<test1.getname()<<endl;
BaseIMG test2("小青","女","987654321","三年B班");
cout<<test2.getsex()<<endl;
BaseIMG test3(test1);
cout<<test3.getnums()<<endl;
return 0;
}
请问你在编写过程遇到了什么问题呢