20240607运算符重载

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值