#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
給了我一個錯誤。我想重載=和+運算符並按照上圖所示使用它們。我錯在哪裏?我想明確定義一個賦值運算符重載,即使編譯器提供了一個。超載分配和加運算符
錯誤:從類型 '
test
' 的t3=t1+t2;
初始化的 '
void test::operator=(test&)
'void operator = (test &temp)
這兩個運營商應該把他們的參數作爲'const的測試&'。 –
參數需要是'const temp&';因爲't1 + t2'是臨時的,不能通過非const。 –
如果有人能夠在參數中解釋const的使用,我們將非常感激。據我所知,const只是表示接收的對象的數據成員不能被改變。我可能錯了。請幫忙。 –