c++ - 如何正确使用二元运算符重载
问题描述
二元运算符应该如何重载,
CMyClass operator-(const CMyClass& oMyClass) const
或者
CMyClass operator-(const CMyClass& oMyClass)
两者有什么区别,第一个调用能否完全替换第二个。
我发现仅使用第二个我将无法添加const MyClass
为 LHS。
#include <iostream>
class CMyClass
{
int m_y{ 0 };
int m_x{ 0 };
public:
CMyClass()
{
}
CMyClass(int x, int y) :
m_x{ x }, m_y{ y }
{}
CMyClass operator-(const CMyClass& oMyClass) const
{
CMyClass oReturn;
oReturn.m_x = m_x - oMyClass.m_x;
oReturn.m_y = m_y - oMyClass.m_y;
return oReturn;
}
CMyClass operator-(const CMyClass& oMyClass)
{
CMyClass oReturn;
oReturn.m_x = m_x - oMyClass.m_x;
oReturn.m_y = m_y - oMyClass.m_y;
return oReturn;
}
};
int main()
{
const CMyClass p1(10, 10);
const CMyClass p2(5, 5);
CMyClass p3 = p1 - p2;
// ...
}
解决方案
推荐阅读
- flutter - AppBar 上的前导错误地保留在不同的页面上
- html - 如何在 JSP 中将对象呈现为 HTML
- powershell - powershell 在转换完成之前退出
- postgresql - 如何使用基于时间戳的弹性搜索获取所有最新文档
- python - 检查列表成员在另一个列表中是否相同
- apache - 带有 x-forwarded-for 的 Apache proxyPass 不起作用
- python - Pandas python:转置单列并分配已经给定的数据
- amazon-efs - 将图像文件上传到 AWS EFS
- c++ - GCC 是否支持 C++20 std::format?
- jenkins - Jenkins 管道作业部署到 kubernetes