以所有成员创建私人班级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;
}
vs
在一个类中创建一个类,以便没有人可以使用隐藏的类(子类),这样就很容易进行维护,而不必担心会破坏别人依赖的代码。
在哪种情况下,我们应从以上(或任何其他(如果有的话))中选择哪种设计?
此问题是Why would one use nested classes in C++?答案的评论部分的继续
答案 0 :(得分:0)
不要按照您的建议去做:它的设计不好,并且有循环依赖的可能。请改用受保护的成员。
class P
{
protected:
int i = 42;
};
#include <iostream>
class B : public P
{
public:
void get()
{
std::cout << i << std::endl;
}
};
int main()
{
B Bobj;
Bobj.get();
std::cin.ignore();
return 0;
}