#include
#include
using namespace std;
class Data
{
public:
Data(){}
Data(int y,int m,int d);
int get_year()
{
return m_year;
}
int get_month()
{
return m_month;
}
int get_day()
{
return m_day;
}
void set_year(int y)
{
m_year=y;
}
void set_month(int m)
{
m_month=m;
}
void set_day(int d)
{
m_day=d;
}
Data operator=(Data c)
{
m_year = c.m_year;
m_month = c.m_month;
m_day = c.m_day;
return *this;
}
private:
int m_year;
int m_month;
int m_day;
};
Data::Data(int y,int m,int d)
{
m_year=y;
m_month=m;
m_day=d;
}
class Person
{
public:
Person(){}
Person(int sex, Data birth, string id);
Person(Person *temp);
char * Person::operator ==(Person c);
~Person(){}
int get_sex()
{
return m_sex;
}
Data get_birthday()
{
return m_birthday;
}
string get_id()
{
return m_id;
}
Person operator=(Person c)
{
m_sex=c.m_sex;
m_birthday=c.m_birthday;
m_id=c.m_id;
return *this;
}
void show();
private:
int m_sex;
Data m_birthday;
string m_id;
};
Person::Person(int sex,Data birth,string id)
{
m_sex=sex;
m_birthday=birth;
m_id=id;
}
Person::Person(Person *temp)
{
m_sex=temp->get_sex();
m_birthday=temp->get_birthday();
m_id=temp->get_id();
}
void Person::show()
{
string sex=m_sex>0?"male":"female";
cout<
char * Person::operator ==(Person c)
{
if(m_id==c.m_id)
{
cout<<"ids are equal"<
}
else
{
cout<<"ids are not equal"<
}
}
int main()
{
Data d(1234,5,67),da(1433,3,32);
Person p[2],a(1,d,"234"),b(0,da,"234");
p[0]=a;
p[0].show();
p[1]=b;
p[1].show();
p[0]==p[1];
return 0;
}
程序这也太长了吧,马上要晕了,不过我觉得LZ重载的=就错了;
char * Person::operator ==(Person c);这个函数至少改成这个
Person & operate =(const String &other);
孩子,你要理解清楚什么是赋值构造函数的,你那个所谓的重载=赋值,是错误的。
“==”为什么返回字符串?怪异的设计