gpt4 book ai didi

c++ - 非成员运算符重载是什么意思

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

我最近浏览了一篇关于运算符重载的文章,其中提到了非成员运算符重载。如果有人能用一个例子来解释非成员运算符重载的含义,我将不胜感激。我知道成员运算符重载是什么(类中重载运算符类型(二进制..等)的方法。我在 SO 上遇到了这个 post 这让我相信非成员运算符重载的目的是处理运算符重载,其中第一个参数不是类,只是一个 native 类型。任何解释什么是非成员运算符重载的链接或示例都将不胜感激。

最佳答案

这意味着你可以在课外重载:

struct X { int data; };

bool operator<(X const& a, X const& b)
{
return a.data < b.data;
}

这对于不对称重载很有用,其中左操作数不需要是您自己的类型:

bool operator<(int a, X const& b) 
{
return a < b.data;
}

这里的一个常见习语是将它与类内定义和友元声明结合起来:

struct X 
{
int data;
friend bool operator<(X const& a, X const& b) { return a.data<b.data; }
friend bool operator<(int a, X const& b) { return a<b.data; }
};

在这里,operator<在技​​术上仍然是成员。

另一个有用的副作用,正如下面 DrewDormann 所指出的,是 (X const&, X const&)将应用于任何可隐式转换为 X const& 的操作数,而不仅仅是那种确切类型的表达式。

关于c++ - 非成员运算符重载是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15466676/

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