gpt4 book ai didi

c++ - 为什么我不能在 operator= 中使用引用类型?

转载 作者:搜寻专家 更新时间:2023-10-31 00:26:26 25 4
gpt4 key购买 nike

我正在尝试为我的类(class)覆盖 operator+operator=。这是我的代码:

#include <iostream>
#include <vector>

using namespace std;

class Integer {
public:
int i;
Integer operator+ (Integer&);
Integer& operator= (Integer&);
};

Integer Integer::operator+(Integer& rhs) {
Integer res;
res.i = this->i + rhs.i;

return res;
}

Integer& Integer::operator=(Integer& rhs) {

this->i = rhs.i;
return *this;
}

int main()
{
Integer i1, i2, i3;
i1.i = 1, i2.i = 2;
i3 = i1 + i2;
cout << i3.i;
}

在 visual studio 2017 中,编译器提示:

"E0349  no operator "=" matches these operands"

似乎 Integer 对象与 operator= 函数中的 Integer& 不匹配。但它适用于 operator+ 功能。这非常令人困惑。

非常感谢。

最佳答案

i3 = i1 + i2;

返回一个Integer类型的临时变量。

现在,您的 operator= 接受一个 Integer&。这是对 Integer 的引用。问题是临时对象不能绑定(bind)到非常量引用。

只需确保更改为 const Integer&。无论如何,这是所有运算符重载的默认值。

关于c++ - 为什么我不能在 operator= 中使用引用类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52452730/

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