C ++预修复和后期修复操作符重载添加(+)(不是++或 - )

时间:2015-03-16 22:56:53

标签: c++

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

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

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

我的问题是,是否有办法让+运算符超载,以便我可以执行5+c之类的操作。我尝试在线搜索解决方案,但我能找到的唯一答案是处理增量/减量运算符,你只需要为post-fix添加一个int参数。我为+尝试了同样的事情,但它没有用。

非常感谢。

1 个答案:

答案 0 :(得分:2)

有两种选择:

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

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

2)从Complex隐式构建double(如果它还没有),并实现一个非限制:

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