运算符重载

文章展示了C++中如何重载+运算符用于类对象的相加,以及前置和后置++运算符的重载方法。同时,演示了友元函数在实现流输出操作符<<时的作用。通过test1,test2,test3三个测试函数,解释了不同类型的运算符重载用法。
摘要由CSDN通过智能技术生成

友元

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

运算符重载

+运算符重载

在这里插入图片描述
在这里插入图片描述

<<运算符重载

在这里插入图片描述

++运算符重载

在这里插入图片描述
注意!!!
在这里插入图片描述
在这里插入图片描述

代码

#include<iostream>
using namespace std;


class person{
    public:
        int name1;
        int name2;
        // person operator+ (person &p1){
        //     person tem(0,0);
        //     tem.name1 = name1+p1.name1;
        //     tem.name2 = name2+p1.name2;
        //     return tem;
        // };
        person(int a,int b):name1(a),name2(b)
        {

        };
};

class myint{
    friend ostream& operator<<(ostream &cout,myint out);
    public:
        myint(){
            this->num = 0;
        }
        //  前置++  返回引用是为了一直对一个数据操作
        myint& operator++(){
            this->num ++;
            return *this;
        }
        // 后置++ 加占位 int 区分,一定返回值
        myint operator++(int ){
            myint tem = *this;
            this->num ++;
            return tem;
        }
    private:
        int num;
};


person operator+(person &a,person &b){
    person tem(0,0);
    tem.name1 = a.name1+b.name1;
    tem.name2 = a.name2+b.name2;
    return tem;
}



ostream& operator<<(ostream &cout,person &out){
    cout << out.name1 << " " << out.name2 ;
    return cout;
}

void test1(){

    person p1(1,2);
    person p2(1,2);
    person p3=p1+p2;
    std::cout<< p3.name1 <<" " << p3.name2 << endl;
    cout << p3 << endl;
}
//后置递增的++ 是右值,不能加 myint&
ostream& operator<<(ostream &cout,myint out){
    cout << out.num;
    return cout;
}



void test2(){
    myint num;
    cout << ++(++num) << endl;
    cout << num << endl;
}


void test3(){
    myint num;
    cout << num++ << endl;
    cout << num << endl;
}
int main(){
    test3();
    test2();
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值