当前位置:  开发笔记 > 编程语言 > 正文

同伴之间的C++友谊是否健康?

如何解决《同伴之间的C++友谊是否健康?》经验,为你挑选了1个好方法。

尽管阶级友谊是C++的最后一种解决方案之一,但这种模式是否有意义?

class Peer
{
public:
    friend class Peer;
    void GetSecret(const Peer& other)
    {
        const std::string& secret = other.GiveSecret();
        std::cout << secret << std::endl;
    }

private:
    const std::string& GiveSecret() const
    {
        return "secrety stuff";
    }
};

int main(int argc, char* argv[])
{
    Peer peerA;
    Peer peerB;
    peerA.GetSecret(peerB);
    return 0;
}

好的,这种模式的原因是因为对等体都是相同的等级,并且他们需要彼此分享知识,但是这种知识是秘密的,因为除了对等体之外没有人应该使用它,或者程序不再有效.

一个非常真实的例子是,当一个对等体从另一个对等体复制构建时,它需要从其源对等体访问秘密信息,但同样没有其他人知道这些内部对象,只有对等体.



1> KeithB..:

在这种情况下,朋友不是必需的.类的对象可以访问任何其他相同类型的对象的私有成员.没有朋友声明它应该工作得很好.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有