#include <iostream>
using namespace std;
class Stu{
friend const Stu operator+(const Stu &R, const Stu &T);
friend istream &operator >>(istream &cin, Stu &P);
private:
string name;
int age;
double *score;
public:
Stu(){}
Stu(string name, int age, double score):name(name), age(age), score(new double(score)){}
// const Stu operator+(const Stu &R)const{
// Stu temp;
// temp.name = name + R.name;
// temp.age = age + R.age;
// return temp;
// }
bool operator>(const Stu &R)const{
return name > R.name && age > R.age && *score > *R.score ? true:false;
}
Stu &operator++(){
name += "1";
++age;
score = new double(++*score);
return *this;
}
const Stu operator++(int){
Stu temp;
name = name + "1";
temp.name = name;//temp.name = name +"1";
temp.age = age++;
temp.score = new double((*score)++);
return temp;
}
void show(){
cout << "name " << name << " age " << age << " score " << *score << endl;
}
~Stu(){
delete score;
}
};
const Stu operator+(const Stu &R, const Stu &T){
Stu temp;
temp.name = R.name + T.name;
temp.age = T.age + R.age;
temp.score = new double(*T.score + *R.score);
return temp;
}
istream &operator >>(istream &cin, Stu &P){
cin >> P.name >> P.age >> *P.score;
return cin;
}
int main()
{
Stu s1("张三", 80, 50.2);
Stu s2("李四", 60, 20.5);
// Stu s3 = s1.operator+(s2);//Stu s3 = s1 + s2
// s3.show();
Stu s4 = s1 + s2;/*operator+(s1, s2);*/
s4.show();
if(s1 > s2){
cout << "s1 > s2" << endl;
}else{
cout << "s1 < s2" << endl;
}
Stu s5("",0,0);
++s5;
s5.show();
Stu s6("",0,0);
s6++;
s6.show();
Stu s7;
cin >> s7;
s7.show();
return 0;
}