C++ - 运算符重载_->没有重载 c++(2)

//运算符重载"+“解析函数
coordinate coordinate::operator+ (const coordinate other)
{
//在该函数内,去实现”+"的真正应该做的操作
coordinate tmp;
tmp.x = this->x + other.x;
tmp.y = this->y + other.y;

return tmp;

}

int main()
{
coordinate a(1,3);
coordinate b(2,5);
coordinate c;

c = a+b;          //被编译器翻译成: c = a.operator+(b);

c.print();        // 成功打印 (3,8)

return 0;

}



**3.运算符重载的本质**


-> 表面上,运算符重载是对C++源生运算符的意义,在某个class中做**重定义。**



-> 本质上,运算符被映射到执行相应的成员函数,所以运算符重载其实是重定义对象的运算符所对应的函数。



**4.运算符重载的意义**


-> 运算符重载是一种语法特性,C++全面支持,Java不支持,python有限度的支持。


-> 没有运算符重载照样写代码,所有操作全部通过显式调用相应成员函数来完成即可。


-> 运算符重载一定程度上体现了C++的多态性,因为同样的运算符在不同的class中表现是不同的。



**5.运算符+的重载中的对应关系回顾**



coordinate coordinate::operator+ (const coordinate other)
{
//在该函数内,去实现"+"的真正应该做的操作
coordinate tmp;
tmp.x = this->x + other.x;
tmp.y = this->y + other.y;

return tmp;

}


**总结:**`a + b; 等价于 a.operator+(b)`,a对应this,b对应函数参数other,a+b的表达式的值对应函数返回值。



**6.运算符=的重载中的对应关系**



//运算符重载"="解析函数1_2

void coordinate::operator=(const coordinate other)
{
//在该函数内,去实现"="的真正应该做的操作
//c = a; c是this,a是other,c=a整个表达式的值是返回值
this->x = other.x;
this->y = other.y;

return ;       //实现为无返回值的函数时,在对对象进行 = 的时候不能连等,也就是说不支持 d = (c = a) ;

}

coordinate coordinate::operator=(const coordinate other)
{
//在该函数内,去实现"="的真正应该做的操作
//c = a; c是this,a是other,c=a整个表达式的值是返回值
this->x = other.x;
this->y = other.y;

return *this;     //实现为有返回值的函数时可以支持 d = (c = a) ;这样连等的形式

}


**总结:**`c = a; 等价于 c.operator=(a);` c对应this,a对应other,**c=a整个表达式的值(其实就是c)对应函数返回值。**



**7.运算符+=的重载中的对应关系**



//运算符重载"+="解析函数
void coordinate::operator+=(const coordinate other)
{
//a += b; 效果上等价于 a = a + b;
// c = (a += b); 我们一般不会这样写,所以定义成无返回值就行
//a是this ,b是other ,操作完成a 的值改变,b的值不改变
this->x = this->x + other.x;
this->y = this->y + other.y;
return;
}


**总结:**`a += b; 等价于 a.operator+=(b);` a对应this,b对应other,**a+=b的整体表达式对应返回值。**
## 最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。**

**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

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

![img](https://img-blog.csdnimg.cn/img_convert/5c89096080d0776c6669cd940bf95983.jpeg)

![img](https://img-blog.csdnimg.cn/img_convert/62f9237d260296d0de9bc18159e551bc.png)

 ![img](https://img-blog.csdnimg.cn/img_convert/757628ff950eb142d98c1723a47abb01.png)

![img](https://img-blog.csdnimg.cn/img_convert/a9b5d799faaeac619a417223bc5259bf.png)

![img](https://img-blog.csdnimg.cn/img_convert/6fe3c35416f6243878228135f5a89d3a.png)

![](https://img-blog.csdnimg.cn/img_convert/5069613527e343cbd417f4ae3f8006e7.png)

 

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

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!


你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值