Обычно я использую только статику в сочетании с системой друзей.
Например, у меня есть класс, который использует множество встроенных вспомогательных функций для вычисления данных, включая операции с частными данными.
Это, конечно же, увеличивает количество функций, которыми обладает интерфейс класса. Чтобы избавиться от этого, объявляю класс-помощник в исходном файле .cpp-классов (и, таким образом, невидимый для внешнего мира), сделайте его другом исходного класса, а затем переместите старые вспомогательные функции в статические (inline) члены класса помощника, передавая старый класс за ссылкой в дополнение к старым параметрам.
Это обеспечивает тонкий интерфейс и не требует большого количества бесплатных функций для друзей. Inlining также работает красиво, поэтому я не полностью против статичности. (я избегаю его так же, как я могу, но использовать его, как это, я хотел бы сделать.)
Не могли бы вы использовать пространства имен? – 2009-06-03 16:51:59