gpt4 book ai didi

c++ - 重用运算符函数返回的对象

转载 作者:太空狗 更新时间:2023-10-29 20:36:57 25 4
gpt4 key购买 nike

考虑以下运算符重载场景

class integer
{
public:
int a;
integer()
{
a = 0;
}
friend integer operator+(integer &a ,int b);
};
integer operator+(integer &a,int b)
{
a.a = a.a + b;
return a;
}
int main()
{
integer obj;
integer obj2;
obj+2; //Line 1. this works.

operator+ 函数返回一个integer 类型的对象。那么为什么我不能执行像这样的函数调用

(obj+2)+3; //no match for 'operator+' (operand types are 'integer' and 'int')

虽然这有效

obj2 = obj+2;
obj2+3;

最佳答案

integer &a 表示a 只能引用一个左值。但是 obj+2 不是左值。

要解决此问题,您应该将参数更改为 integer a,即:

  • 可以绑定(bind)到右值
  • 使您的函数实际执行operator+ 的函数。

如果您的第一个参数是integer&,则建议您尝试编写operator+=。对于该函数,解决方案是还返回 integer&,因此 obj+=2 是一个左值。

关于c++ - 重用运算符函数返回的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36614262/

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