【发布时间】:2009-02-23 12:02:28
【问题描述】:
虽然阶级友谊是 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;
}
好吧,这种模式的原因是因为 Peers 都是同一级别的,他们需要相互共享知识,但是这个知识是秘密的,因为除了 peer 之外没有人应该使用它,或者程序是不再有效。
一个非常真实的例子是,当一个对等点是从另一个对等点复制构建时,它需要从其源对等点访问秘密信息,但同样没有理由让其他任何人知道这些内部信息,只有对等点.
【问题讨论】:
-
我和任何同龄人都不是朋友。
-
也许您想在设计中采用不同的方法。例如,您的同龄人可能有一个负责您打算的行为的主人..很大程度上取决于您要做什么。
标签: c++ class-design friend