В чем разница между созданием класса P со всеми членами в качестве частного и дружественного класса B, производного от P
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;
}
против
Создание класса внутри класса, чтобы никто не мог использовать скрытый класс (подкласс), было бы легко обслуживать, не беспокоясь о том, чтобы сломать чей-либо другой зависимый код.
В какой ситуации мы выбираем какой дизайн из вышеперечисленных (или любой другой, если таковой имеется)?
Этот вопрос является продолжением раздела комментариев ответа Зачем использовать вложенные классы в C ++?