> -- Илья Ермаков писал(а):
> Tree - само дерево, TreeNode - вершина дерева. Пользователь не имеет никакого понятия о реализации этих типов, для него создается набор общих методов. Теперь приступаем к реализации - и сразу же видим, что эти два типа должны иметь полный доступ к внутренностям друг друга. Если заставить их взаимодействовать между собой через тот же интерфейс, который мы описали для пользователя, мы получим красивую, но крайне медленную и бесполезную реализацию.

Эта проблема в С++ может быть решена и без friend'ов. Просто пользователь видит только интерфейсы, а реализация (модуль в терминах С++) и внутренности.