gpt4 book ai didi

c++ - 如何使赋值运算符重载用于连续赋值

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:13:07 35 4
gpt4 key购买 nike

今天面试了。我被要求写一个使赋值运算符重载。

假设我有 3 个对象,例如

类名 obj1, obj2, obj3;

现在我想这样赋值

obj1 = obj2 = obj3;

怎么做?

我在下面写了一个程序,但它抛出错误作为 error: no match for 'operator=' in 'ab = ab1.overload::operator=((* & ab2))'

#include <iostream>

using namespace std;
class overload{
public:
int x, y;
overload operator=(overload &);
overload(){x = 1; y = 2;}
};
overload overload::operator=(overload &ov)
{
overload o;
o.x = ov.x;
o.y = ov.y;
cout << o.x << "..." << o.y << endl;
return o;
}
int main()
{
overload ab, ab1, ab2;
ab = ab1 = ab2;
return 0;
}

最佳答案

您正在修改本地对象并按值返回它。您需要修改 this 对象并返回对它的引用:

overload& overload::operator=(const overload& ov)
{
this->x = ov.x;
this->y = ov.y;
return *this;
}

您得到的错误是因为函数返回的临时值无法绑定(bind)到对非常量的引用(因此在我的示例中是 const)。

关于c++ - 如何使赋值运算符重载用于连续赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18902855/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com