gpt4 book ai didi

c++ - 在这种情况下,运算符重载如何工作?

转载 作者:太空狗 更新时间:2023-10-29 20:21:08 27 4
gpt4 key购买 nike

我在这段代码中了解到这个运算符重载是如何工作的......

class operatorOver {
public:
int a, b, c;
};

operatorOver operator+(const operatorOver &a, const operatorOver &b) {
operatorOver aa;
aa.a = b.a + a.a;
return aa;
}

int main()
{
operatorOver aaa, bbb, ccc;

aaa.a = 100;
bbb.a = 200;
ccc = aaa + bbb;

cout << ccc.a << endl;

system("pause");
};

但是这个版本我不明白这个是怎么工作的....

class operatorOver {
public:
operatorOver operator+(const operatorOver &a) {
operatorOver aa;
aa.a = (*this).a + a.a;
return aa;
}

int a, b, c;
};

int main()
{
operatorOver aaa, bbb, ccc;

aaa.a = 100;
bbb.a = 200;
ccc = aaa + bbb;

cout << ccc.a << endl;

system("pause");
};

我展示的第一个,我假设这里的运算符重载代码正在考虑 2 个对象类以使其工作...

但是为什么第二个例子显示我不需要在它的参数中创建另一个对象类但仍然有效...当你查看 main() 时你会看到仍然有 2 个对象类被传入....我迷路了。

最佳答案

一些二元运算符,例如+,可以重载为成员函数和非成员函数。

+作为成员函数被重载时,该函数需要声明一个参数。当运算符用作:

a + b

调用解析为

a.operator+(b);

当它作为非成员函数被重载时,该函数需要声明为有两个参数。当运算符用作:

a + b

调用解析为

operator+(a, b);

进一步阅读:http://en.cppreference.com/w/cpp/language/operators

关于c++ - 在这种情况下,运算符重载如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45767657/

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