类和对象-运算符重载
2022/9/2 23:52:54
本文主要是介绍类和对象-运算符重载,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
运算符重载
运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型
4.5.1 加号运算符重载
作用:实现两个自定义数据类型相加的运算
成员函数加法重载运算
1 #include <iostream> 2 using namespace std; 3 int a = 10; 4 int b = 10; 5 int c = a + b; 6 class person 7 { 8 public: 9 int m_a; 10 int m_b; 11 person operator+ (person& p) 12 { 13 person tempt; 14 tempt.m_a = m_a + p.m_a; 15 tempt.m_b = m_b + p.m_b; 16 return tempt; 17 } 18 }; 19 int main() 20 { 21 person p1; 22 p1.m_a = 10; 23 p1.m_b = 10; 24 person p2; 25 p2.m_a = 10; 26 p2.m_b = 10; 27 person p3 = p1 + p2; //本质上是 :p1.operaor+(p2)
28 cout <<"p1.m_a +p2.m_a = " << p3.m_a << endl 29 << "p1.m_b +p2.m_b = " << p3.m_b << endl; 30 }
全局函数加法重载运算
1 #include <iostream> 2 using namespace std; 3 int a = 10; 4 int b = 10; 5 int c = a + b; 6 class person 7 { 8 public: 9 int m_a; 10 int m_b; 11 }; 12 person operator+ (person& p1, person& p2) 13 { 14 person tempt; 15 tempt.m_a = p1.m_a + p2.m_a; 16 tempt.m_b = p1.m_b + p2.m_b; 17 return tempt; 18 } 19 int main() 20 { 21 person p1; 22 p1.m_a = 10; 23 p1.m_b = 10; 24 person p2; 25 p2.m_a = 10; 26 p2.m_b = 10; 27 person p3 = p1 + p2 ;//本质上是operator+(p1,p2)
28 cout <<"p1.m_a +p2.m_a = " << p3.m_a << endl 29 << "p1.m_b +p2.m_b = " << p3.m_b << endl; 30 }
运算符的函数重载
1 #include <iostream> 2 using namespace std; 3 int a = 10; 4 int b = 10; 5 int c = a + b; 6 class person 7 { 8 public: 9 int m_a; 10 int m_b; 11 }; 12 person operator+ (person& p1, int num ) 13 { 14 person tempt; 15 tempt.m_a = p1.m_a + num ; 16 tempt.m_b = p1.m_b + num; 17 return tempt; 18 } 19 int main() 20 { 21 person p1; 22 p1.m_a = 10; 23 p1.m_b = 10; 24 person p3 = p1 + 10; 25 cout <<"p1.m_a +num = " << p3.m_a << endl 26 << "p1.m_b +num = " << p3.m_b << endl; 27 }
总结1:对于内置的数据类型(比如int类型)的表达式的的运算符是不可能改变的
总结2:不要滥用运算符重载(比如加法写成减法等等,会让人看不懂)
这篇关于类和对象-运算符重载的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-20测试人员都是画画大神,让我看看谁还不会用代码图?
- 2024-05-20年薪百万的程序员都在用的摸鱼方式……
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了