#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只是表示接收的对象的数据成员不能被改变。我可能错了。请帮忙。 –