gpt4 book ai didi

c++ - C++ 友元类

转载 作者:太空狗 更新时间:2023-10-29 23:39:20 26 4
gpt4 key购买 nike

我不是很理解这个概念,或者我是对的......所以让我们以这个“ friend ”类为例:

class MyClass{
friend class AnotherClass;
private:
int secret;
}

class AnotherClass{
public:
void getSecret(MyClass mc){
return mc.secret;
}
}

所以是的......在上面的代码中,如果你这样做它实际上会起作用......但一般来说,为什么你不能一直使用 getter 和 setter 而不是 friend 类? friend类的使用原因是因为“繁琐”?

最佳答案

friend 适用于不想将 getters/setters/internals 暴露给所有人,而只是暴露给单个类的情况。所以它是一个封装的工具。

例如,如果您在 MyClass 中提供了一个公共(public)的 getSecret,每个人都可以访问该私有(private)变量,即使他们不应该知道。这打破了封装。 friend 就是为了解决这个问题,所以只有那些需要知道 secret 的类才能访问它。

正如@nicomp 所说,“这就像给了你的好 friend 一把你家的 key ,但你不知道他们会用它做什么”。因此,friend 类可以无限制地访问与其成为 friend 的类的所有内部结构。这很不幸,但这里的关键(没有双关语意)是让类尽可能小,这样这就不会成为问题,这也符合单一职责原则。

关于c++ - C++ 友元类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36791241/

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