このコードにはエラーがあります。C++ - コピーコンストラクタでconstを使用する場合と使用しない場合の違いは何ですか?
[Error] no matching function for call to Complex::Complex(Complex)
しかし、このコードはComplex(const Complex & newComplex)
、
はただのconstを使用することを書くとき、このコードは正常に動作します。
なぜですか?どうしてか分かりません。答えを教えてください。彼らはrvalue
(基本的には一時的なオブジェクト)を渡された場合
#include <iostream>
using namespace std;
class Complex {
double re, im;
public:
Complex(double _re = 0, double _im = 0): re(_re), im(_im) {}
Complex(Complex & newComplex) {
re = newComplex.re;
im = newComplex.im;
}
~Complex() {}
Complex operator + (Complex & inputComplex) {
Complex tempComplex;
tempComplex.re = re + inputComplex.re;
tempComplex.im = im + inputComplex.im;
return tempComplex;
}
};
int main()
{
Complex c1(1, 0), c2(2, 1);
Complex c3(c1 + c2);
}