C++ C++;用于加法(+;)的预修复和后修复运算符重载(不是+;+;或--)
我正在为一个赋值编写一个C++ C++;用于加法(+;)的预修复和后修复运算符重载(不是+;+;或--),c++,C++,我正在为一个赋值编写一个Complex类,其中一个方法在向复数添加一个double时应该重载默认的加法运算符。 到目前为止,我有以下代码可以正确地用于c+5,其中c是一些复杂的对象 Complex& Complex::operator+(const double& d) const { return Complex(real + d, imag); } 但是,它不喜欢我做5+c。我想这可能是因为前缀后修复的事情,但我不确定 我的问题是,是否有一种方法也可以重载+操作符,
Complex
类,其中一个方法在向复数添加一个double时应该重载默认的加法运算符。
到目前为止,我有以下代码可以正确地用于c+5
,其中c
是一些复杂的对象
Complex& Complex::operator+(const double& d) const
{
return Complex(real + d, imag);
}
但是,它不喜欢我做5+c
。我想这可能是因为前缀后修复的事情,但我不确定
我的问题是,是否有一种方法也可以重载+
操作符,以便我可以执行类似5+c
的操作。我试着在网上搜索解决方案,但我能找到的唯一答案是递增/递减运算符,在这里,您只需为post fix添加一个int参数。我在+
上尝试了同样的方法,但没有效果
非常感谢。我想到两个选项:
1) 实现两个非成员功能:
Complex operator+(const Complex& lhs, double rhs);
Complex operator+(double lhs, const Complex& rhs);
2) 使复杂
可以从double
隐式构造(如果还没有),并实现单个非menber:
Complex operator+(const Complex& lhs, const Complex& rhs);
将其设置为独立运算符(如果类需要,请定义外部,如果需要,请将其设置为朋友
)。在链接副本中,向下滚动到我看到的“二进制算术运算符”。是否没有成员功能选项?非常感谢您的光临way@sshashank124不太可能,因为成员具有类型为Complex
的隐式第一个参数。