关于重载的问题!!!
帮我解释一下错误的原因,要怎么改#include<iostream>
using namespace std;
class zerotwo
{
public:
zerotwo()
{
i = 1;
}
zerotwo operator*(zerotwo& right)
{
zerotwo temp;
temp.i = i * right.i;
return temp;
}
zerotwo operator=(zerotwo& right)
{
i = right.i;
}
int i;
};
int main()
{
zerotwo p1;
zerotwo p2;
p1 = p1 * p2;《------这里错了
} #include<iostream>
using namespace std;
class zerotwo
{
public:
zerotwo()
{
i = 1;
}
zerotwo operator*(zerotwo& right)
{
zerotwo temp;
temp.i = i * right.i;
return temp;
}
zerotwo &operator=(const zerotwo& right)
{
i = right.i;
return *this;
}
int i;
};
int main()
{
zerotwo p1;
zerotwo p2;
p1 = p1 * p2;
}
人造人 发表于 2020-4-29 18:39
为什么必须要加const啊 ZeroTw 发表于 2020-4-29 18:54
为什么必须要加const啊
因为 p1 + p2 是一个临时对象
#include<iostream>
using namespace std;
class zerotwo
{
public:
zerotwo()
{
i = 1;
}
zerotwo operator*(zerotwo& right)
{
zerotwo temp;
temp.i = i * right.i;
return temp;
}
zerotwo &operator=(zerotwo& right)
{
i = right.i;
return *this;
}
int i;
};
int main()
{
zerotwo p1;
zerotwo p2;
p1 = p2;
}
#include <iostream>
int main() {
int a = 10, b = 11;
int &ra = a, &rb = b; // ok
//int &rc = a + b; // error
const int &rc = a + b;// ok
return 0;
}
人造人 发表于 2020-4-29 18:56
因为 p1 + p2 是一个临时对象
好的
页:
[1]