gpt4 book ai didi

c++ - 全局运算符和成员运算符的区别

转载 作者:IT老高 更新时间:2023-10-28 12:30:46 24 4
gpt4 key购买 nike

定义一个接受两个类引用的全局操作符和定义一个只接受正确操作数的成员操作符有区别吗?

全局:

class X
{
public:
int value;
};

bool operator==(X& left, X& right)
{
return left.value == right.value;
};

成员(member):

class X
{
int value;
bool operator==( X& right)
{
return value == right.value;
};
}

最佳答案

使用非成员运算符(通常声明为友元)的一个原因是左侧是执行操作的那个。 Obj::operator+ 适用于:

obj + 2

但对于:

2 + obj

这行不通。为此,您需要以下内容:

class Obj
{
friend Obj operator+(const Obj& lhs, int i);
friend Obj operator+(int i, const Obj& rhs);
};

Obj operator+(const Obj& lhs, int i) { ... }
Obj operator+(int i, const Obj& rhs) { ... }

关于c++ - 全局运算符和成员运算符的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1145022/

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