gpt4 book ai didi

c++ - 什么时候应该在 C++ 中使用 'friend'?

转载 作者:太空宇宙 更新时间:2023-11-04 14:05:51 25 4
gpt4 key购买 nike

我一直在阅读 C++ FAQ并对 friend 感到好奇声明。我个人从未使用过它,但我对探索这门语言很感兴趣。

使用friend 的一个好例子是什么? ?


阅读常见问题解答的时间更长一些,我喜欢 << 的想法>>运算符重载并添加为这些类的友元。但是我不确定这不会破坏封装。这些异常什么时候可以保持在 OOP 的严格范围内?

最佳答案

首先(IMO)不要听那些说 friend 没用的人。它是有益的。在许多情况下,您将拥有包含不打算公开的数据或功能的对象。对于大型代码库尤其如此,其中有许多作者可能对不同领域只是表面上熟悉。

有友元说明符的替代品,但它们通常很麻烦(cpp 级具体类/屏蔽类型定义)或不是万无一失的(注释或函数名称约定)。

进入答案;

friend 说明符允许指定的类访问进行友元声明的类中 protected 数据或功能。例如在下面的代码中,任何人都可以询问 child 的名字,但只有母亲和 child 可以更改名字。

您可以通过考虑更复杂的类(例如 Window)来进一步了解这个简单示例。一个 Window 很可能会有许多不应公开访问但相关类(例如 WindowManager)需要的函数/数据元素。

class Child
{
//Mother class members can access the private parts of class Child.
friend class Mother;

public:

string name( void );

protected:

void setName( string newName );
};

关于c++ - 什么时候应该在 C++ 中使用 'friend'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16996545/

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