C++函数与运算符重载实战指南
函数重载(重点)
在同一个作用域内,可以声明几个功能类似的同名函数。这些同名函数的形式参数(参数的个数、类型或顺序)必须不同。不能仅通过返回类型的不同来重载函数。
示例代码:
#include<iostream>usingnamespacestd;classprintData{public:voidprint(inti){cout<<"整数为: "<<i<<endl;}voidprint(doublef){cout<<"浮点数为: "<<f<<endl;}voidprint(charc[]){cout<<"字符串为: "<<c<<endl;}};intmain(void){printData pd;pd.print(5);pd.print(500.263);charc[]="Hello C++";pd.print(c);return0;}运算符重载
运算符重载允许自定义各种运算符在自定义类型上的行为,使自定义类型更加直观和易于使用。
基本原则:
- 不能创建新运算符,只能重载已存在的运算符
- 至少有一个操作数是用户定义的类型
- 不能更改运算符的优先级
示例1:假设我们有一个Person 类,我们可以重载 == 运算符来实现两个Person是否相等的判断。
classPerson{public:string name;intinNumberTail;booloperator==(Person pTmp){returnpTmp.name==name&&pTmp.inNumberTail==inNumberTail;}};示例2:假设我们有一个简单的 Point 类,我们可以重载 + 运算符来实现两个点的加法。
classPoint{public:intx,y;Pointoperator+(constPoint&other)const{returnPoint{x+other.x,y+other.y};}};注意事项:
- 保持运算符行为与原始意图一致
- 避免过度使用导致代码难以理解
- 使用const确保函数不会意外修改对象状态
运算符重载是提高代码可读性的强大工具,但需谨慎使用以保证代码清晰性和维护性。
