【发布时间】:2018-12-08 07:04:52
【问题描述】:
创建所有成员为私有的类 P 和与派生自 P 的类 B 交朋友有什么区别
class P
{
private:
int i;
friend class B;
};
class B: public P
{
public:
void get()
{
cout <<i;
}
};
int main()
{
B obj2;
obj2.get();
return 0;
}
对
在一个类中创建一个类,这样任何人都不能使用隐藏的类(子类),这样维护起来很容易,而不必担心破坏别人的依赖代码。
在哪种情况下,我们会从上述(或任何其他如果有的话)中选择哪种设计?
这个问题是Why would one use nested classes in C++?答案的评论部分的延续
【问题讨论】:
-
“类 P [...] 与派生自 P 的类 B 交朋友”听起来像是糟糕的设计。你能举个例子吗?
-
@JHBonarius 为什么不呢?想象一个节点类,其父指针指向派生的 Group 类。
-
当然。让我补充
-
"创建所有成员为私有的类 P 并与派生自 P 的类 B 交朋友" 那么为什么不改为保护所有成员呢?
-
@Scheff 我认为基类不应该依赖于它的派生类:听起来像是循环依赖的风险。还有其他解决方案。
标签: c++ inheritance friend