C++ 加法 (+) 的前缀和后修复运算符重载(不是 ++ 或 --)

C++ Pre-fix and Post-fix operator overloading for addition (+) (not ++ or --)

本文关键字:重载 运算符 不是 加法 前缀 C++      更新时间:2023-10-16

我正在为一个赋值编写一个Complex类,其中一个方法在向复数添加双精度时应重载默认加法运算符。到目前为止,我有以下代码可以正确适用于c+5其中c是某个Complex对象

Complex& Complex::operator+(const double& d) const
{
    return Complex(real + d, imag);
}

但是,当我做5+c时,它不喜欢它.我认为这可能是因为前缀修复后的事情,但我不确定。

我的问题是是否有办法使+运算符重载,以便我可以做类似5+c的事情。我尝试在线搜索解决方案,但我能找到的唯一答案涉及递增/递减运算符,您只需为修复后添加一个 int 参数。我为+尝试了同样的事情,但它不起作用。

谢谢。

我想

到了两个选项:

1) 实现两个非成员函数:

Complex operator+(const Complex& lhs, double rhs);
Complex operator+(double lhs, const Complex& rhs);

2) 使Complexdouble隐式构造(如果还没有),并实现单个非 menber:

Complex operator+(const Complex& lhs, const Complex& rhs);