C++ 笔记7 操作符重载_c++ arr[0](1)

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

1)表达式结果是右值,不能对表达式结果再赋值
2)左右操作数既可以是左值也可以是右值
3)两种具体实现方式
–》成员函数形式(左调右参)
L#R的表达式可以被编译器处理为"L.operator#®"成员函数调用形式,该函数的返回就是表达式结果。
–》全局函数形式(左右都参)
L#R的表达式可以被编译器处理为"operator#(L,R)"全局函数调用形式,该函数的返回就是表达式结果。
注:通过friend关键字可以把一个全局函数声明为某个类的友元,对于友元函数可以访问类中的任何成员。

#include <iostream>
using namespace std;
//复数类
class Complex{
 
public:
    Complex(int r,int i):m\_r(r),m\_i(i){
 }
    void print(void) const {
 
        cout << m_r << '+' << m_i << 'i' << endl;
    }
    //重载+:成员函数形式
    //c1+c2 ==> c1.operator+(c2)
    //1)修饰返回值:禁止对表达式结果再赋值
    //2)常引用参数:支持常量型右操作数
    //3)常成员函数:支持常量型左操作数
    const Complex operator+(const Complex& c)const{
 
        Complex res(m_r+c.m_r,m_i+c.m_i);
        return res;
    }
private:
    int m_r;//实部
    int m_i;//虚部

    //友元函数
    friend const Complex operator-(
            const Complex& l,const Complex& r);
};
//重载-:全局函数形式
//c2-c1 ==> operator-(c2,c1)
const Complex operator-(const Complex& l,const Complex& r){
 
    Complex res(l.m_r-r.m_r,l.m_i-r.m_i);
    return res;
}

int main(void){
 
    const Complex c1(1,2);
    const Complex c2(3,4);
    c1.print();
    c2.print();
    //Complex c3 = c1.operator+(c2)
    Complex c3 = c1 + c2;
    c3.print();//4+6i
    
    //Complex c4 = operator-(c2,c1)
    Complex c4 = c2 - c1;
    c4.print();//2+2i

    return 0;
}

1.2 赋值类双目操作符: += -= …

1)表达式结果是左值,就是左操作数的自身
2)左操作数一定是左值,右操作数可以是左值也可以是右值
3)两种具体实现方式
–》成员函数形式(左调右参),L#R ==> L.operator#®
–》全局函数形式(左右都参),L#R ==> operator#(L,R)

#include <iostream>
using namespace std;
class Complex{
 
public:
    Complex(int r,int i):m\_r(r),m\_i(i){
 }
    void print(void) const {
 
        cout << m_r << '+' << m_i << 'i' << endl;
    }
    //+=:成员函数形式
    //c1+=c2 ==> c1.operator+=(c2)
    Complex& operator+=(const Complex& c){
 
        m_r += c.m_r;
        m_i += c.m_i;
        return \*this;
    }
    //-=:全局函数形式
    //友元函数可以定义在类的内部,但本质还是全局函数
    //c1-=c2 ==> operator-=(c1,c2)
    friend Complex& operator-=(Complex& l,const Complex& r){
 


![img](https://img-blog.csdnimg.cn/img_convert/9f92b6a754a69b8fe2a0fd067008f890.png)
![img](https://img-blog.csdnimg.cn/img_convert/695a131345ab3f9752adeb770a16cec5.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

、讲解视频,并且后续会持续更新**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值