重载 operator+ 是为自定义类定义加法行为,成员函数适用于左操作数为当前类(如 Vec2 a + b),友元函数支持对称运算(如 5.0 + a);均应返回新对象、参数用 const 引用、避免悬垂引用,并注意资源管理类需同步实现拷贝构造与赋值运算符。
重载 operator+ 就是让自定义类的对象能像内置类型一样用 + 相加,关键在于定义一个函数告诉编译器“两个对象相加时具体做什么”。
在类内部定义 operator+ 成员函数,参数是右操作数。它自动获得 this 指针,代表左操作数。
例如,实现两个二维向量相加:
class Vec2 {
public:
double x, y;
Vec2(double x = 0, double y = 0) : x(x), y(y) {}
// 成员函数重载 +
Vec2 operator+(const Vec2& other) const {
return Vec2(x + other.x, y + other.y);
}
};
使用时:Vec2 a(1, 2), b(3, 4); Vec2 c = a + b; —— 调用的是 a.operator+(b)。
注意:加 const 修饰符更安全,避免意外修改自身;返回新对象而非引用,符合 + 的语义(不改变原对象)。
当希望支持 int + Vec2 或 Vec2 + int 这类混合运算,或者左操作数不是当前类时,用友元函数更灵活。
例如,支持标量与向量相加:
class Vec2 {
public:
double x, y;
Vec2(double x = 0, double y = 0) : x(x), y(y) {}
friend Vec2 operator+(const Vec2& v, double s) {
return Vec2(v.x + s, v.y + s);
}
friend Vec2 operator+(double s, const Vec2& v) {
return Vec2(v.x + s, v.y + s);
}
};
这样 Vec2 a(1,2); auto b = a + 5.0; 和 auto c = 5.0 + a; 都能通过编译。
友元函数不是类成员,不隐含 this,所有参数都显式写出;声明在类内,定义在类外(或直接内联)。
Vec2),不是引用——+ 是纯计算,不该修改任一操作数const
引用(如 const Vec2&),避免不必要的拷贝const 限定(成员函数末尾),提高可读性和调用兼容性operator+ 本身不负责内存管理,但如果类里有指针成员、动态分配资源,那 operator=、拷贝构造函数等也得同步实现(遵循三法则/五法则)。
比如只重载了 + 却没写 =,而类中用了 new 分配内存,就可能引发浅拷贝问题。
简单类(仅含基本类型或标准容器)一般不用额外处理;复杂资源管理类必须配套完善。
基本上就这些。operator+ 本质就是个函数名特殊的普通函数,按需选成员或友元,注意语义清晰、参数安全、返回合理就行。
# c++
# 运算符
# 赋值运算符
# 成员函数
# 构造函数
# const
# auto
# 局部变量
# int
# 指针
# 重载运算符
# operator
# 类型转换
# 对象
# this
# 自定义
# 用友
# 管理类
# 的是
# 是个
# 都能
# 做什么
# 适用于
# 就行
相关文章:
,巨量百应是干嘛的?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
,有什么在线背英语单词效率比较高的网站?
如何在云主机上快速搭建多站点网站?
如何在IIS7上新建站点并设置安全权限?
浅析上传头像示例及其注意事项
网站图片在线制作软件,怎么在图片上做链接?
建站主机无法访问?如何排查域名与服务器问题
建站之星伪静态规则如何设置?
如何获取上海专业网站定制建站电话?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
已有域名和空间如何搭建网站?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
如何通过商城免费建站系统源码自定义网站主题?
建站VPS能否同时实现高效与安全翻墙?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
制作网站的模板软件,网站怎么建设?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
如何用西部建站助手快速创建专业网站?
制作电商网页,电商供应链怎么做?
建站之星如何保障用户数据免受黑客入侵?
如何在万网开始建站?分步指南解析
广州美橙建站如何快速搭建多端合一网站?
临沂网站制作公司有哪些,临沂第四中学官网?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
油猴 教程,油猴搜脚本为什么会网页无法显示?
建站之星后台密码遗忘或太弱?如何重置与强化?
贸易公司网站制作流程,出口贸易网站设计怎么做?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
中山网站制作网页,中山新生登记系统登记流程?
如何通过二级域名建站提升品牌影响力?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
动图在线制作网站有哪些,滑动动图图集怎么做?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
如何通过宝塔面板实现本地网站访问?
如何快速搭建虚拟主机网站?新手必看指南
网站专业制作公司有哪些,做一个公司网站要多少钱?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
如何快速打造个性化非模板自助建站?
网站网页制作专业公司,怎样制作自己的网页?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
建站之星代理平台如何选择最佳方案?
建站之星安装后界面空白如何解决?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。