//打印坐标函数
void coordinate::print(void)
{
cout << “(” << this->x <<“,”<< this->y << “)” <<endl;
}
//运算符重载"+“解析函数
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;
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!
你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!