#include<iostream>
#include<string>
using namespace std;
class student
{
private:
char *name;
char *num;
char *zy;
public:
student(char* na,char* nu,char* z)
{
name=new char[20];
num=new char[20];
zy=new char[20];
strcpy(name,na);strcpy(num,nu);strcpy(zy,z);
}
student(int i)//转换构造函数
{
//name=new char[20];
num=new char[20];
//char *a;
//a=new char[20];
//zy=new char[20];
//strcpy(name,name);
num[0]=(i%1000000000+'0');
num[1]=(i%100000000+'0');
num[2]=(i%10000000+'0');
num[3]=(i%1000000+'0');
num[4]=(i%100000+'0');
num[5]=(i%10000+'0');
num[6]=(i%1000+'0');
num[7]=(i%100+'0');
num[8]=(i%10+'0');
num[9]=(i%1+'0');
//num[10]='\0';
//strcpy(num,a);
/*delete a;*/
//strcpy(zy,zy);
}
~student()
{
delete []name;
delete []num;
delete []zy;
}
void print()
{
cout<<"name:"<<name<<endl<<"num:"<<num<<endl<<"zy:"<<zy<<endl;
}
operator int()//类型转换函数
{
int i;
i=(num[0]-'0')*1000000000+(num[1]-'0')*100000000+(num[2]-'0')*10000000+
(num[3]-'0')*1000000+(num[4]-'0')*100000+(num[5]-'0')*10000+
(num[6]-'0')*1000+(num[7]-'0')*100+(num[8]-'0')*10+(num[9]-'0');
return i;
}
student &operator=(const student &);//重载赋值运算符
};
student &student::operator=(const student &x)
{
if(this==&x)
return *this;
delete num;
num=new char[strlen(x.num)+1];
strcpy(num,x.num);
return *this;
}
int main()
{
student stu1("hcs","1234567891","wg"),stu3("sb","1111111112","jk"),stu4("sp","1122334411","en");
student stu2(1231231231);
stu1=stu2;
cout<<"调用转换构造函数后数据:\n";
stu1.print();
cout<<"重载赋值运算后数据:\n";
stu1=stu3;
stu1.print();
cout<<"学号加减运算结果\n"<<int(stu4)-int(stu1)<<endl;
return 0;
}

#include<string>
using namespace std;
class student
{
private:
char *name;
char *num;
char *zy;
public:
student(char* na,char* nu,char* z)
{
name=new char[20];
num=new char[20];
zy=new char[20];
strcpy(name,na);strcpy(num,nu);strcpy(zy,z);
}
student(int i)//转换构造函数
{
//name=new char[20];
num=new char[20];
//char *a;
//a=new char[20];
//zy=new char[20];
//strcpy(name,name);
num[0]=(i%1000000000+'0');
num[1]=(i%100000000+'0');
num[2]=(i%10000000+'0');
num[3]=(i%1000000+'0');
num[4]=(i%100000+'0');
num[5]=(i%10000+'0');
num[6]=(i%1000+'0');
num[7]=(i%100+'0');
num[8]=(i%10+'0');
num[9]=(i%1+'0');
//num[10]='\0';
//strcpy(num,a);
/*delete a;*/
//strcpy(zy,zy);
}
~student()
{
delete []name;
delete []num;
delete []zy;
}
void print()
{
cout<<"name:"<<name<<endl<<"num:"<<num<<endl<<"zy:"<<zy<<endl;
}
operator int()//类型转换函数
{
int i;
i=(num[0]-'0')*1000000000+(num[1]-'0')*100000000+(num[2]-'0')*10000000+
(num[3]-'0')*1000000+(num[4]-'0')*100000+(num[5]-'0')*10000+
(num[6]-'0')*1000+(num[7]-'0')*100+(num[8]-'0')*10+(num[9]-'0');
return i;
}
student &operator=(const student &);//重载赋值运算符
};
student &student::operator=(const student &x)
{
if(this==&x)
return *this;
delete num;
num=new char[strlen(x.num)+1];
strcpy(num,x.num);
return *this;
}
int main()
{
student stu1("hcs","1234567891","wg"),stu3("sb","1111111112","jk"),stu4("sp","1122334411","en");
student stu2(1231231231);
stu1=stu2;
cout<<"调用转换构造函数后数据:\n";
stu1.print();
cout<<"重载赋值运算后数据:\n";
stu1=stu3;
stu1.print();
cout<<"学号加减运算结果\n"<<int(stu4)-int(stu1)<<endl;
return 0;
}
