#include<iostream>
using namespace std;
class test
{
int i;
string s;
public:
test(){}
test(int a,string b)
{
i=a;
s=b;
}
void operator = (test &temp)
{
cout<<"In assignment operator"<<endl;
i=temp.i;
s=temp.s;
}
test operator + (test &temp)
{
test newobj;
newobj.i=i+temp.i;
newobj.s=s+" "+temp.s;
return newobj;
}
};
main()
{
test t1(5,"ABC");
test t2;
t2=t1;
test t3;
t3=t1+t2;
}
質問:t3=t1+t2
は私にエラーが発生します。私は=と+演算子の両方をオーバーロードし、上記のように使用したいと思います。どこが間違っていますか?私は明示的に1つの代入演算子のオーバーロードを定義したいと思います。代入とプラス演算子のオーバーロード代入
エラー:型の右辺値からタイプ '試験&' の非const参照の無効な初期化 '
test
't3=t1+t2;
'
void test::operator=(test&)
'void operator = (test &temp)
両オペレータはCONSTテスト& ''としての引数を取るべきです。 –
paramsは 'const temp 'である必要があります。 't1 + t2'は一時的になり、非constを通ることができないからです。 –
誰かがconstでのパラメータの使用を説明できるかどうか本当に感謝します。私が理解する限り、constは受け取ったオブジェクトのデータメンバーを変更できないことを示しています。私は間違っているかもしれません。助けてください。 –