gpt4 book ai didi

c++ - 重载运算符作为友元

转载 作者:行者123 更新时间:2023-11-30 02:01:50 25 4
gpt4 key购买 nike

我有一个使用friend这个词的想法,来访问除自己的类之外的私有(private)成员。例如,我有一个 A 类,需要在 A 的方法中访问 B 类属性的私有(private)方法,我可以将该方法声明为友元。

但是,请看下面的代码:

#include <cstdlib>

class Coord {
private:
int x, y;
public:
Coord (int i1, int i2) : x(i1), y(i2) {
}
friend Coord operator- (Coord const& c1, Coord const& c2) {
return Coord(c1.x-c2.x, c1.y-c2.y);
}
Coord abs() {
return Coord(std::abs(x),std::abs(y));
}
};

作为 friend ,哪种好处可能会使运算符(operator)负担过重?我真的不明白为什么有人会对此感兴趣。

我已经阅读了很多关于它的内容,但我没有得到一个清晰的概念。

谁能写一个小例子让我观察事实?

最佳答案

看看Herb Sutters和 Scott Meyers 的例子:

总结如下:

首先:使运算符像 - 非成员:如果执行 c = a - b minus 属于哪个对象? A?乙?或者没有。大多数人都不同意,因此不是成员(member)。第二:运营商需要修改私有(private)内容,因此要么你交个 friend ,要么你使用像getters这样的访问函数。所以大多数人都和 friend 在一起。

在您的特定示例中,友元声明紧跟在定义之后,这是定义全局友元函数的最紧凑方式。

关于c++ - 重载运算符作为友元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13778902/

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