Classes and class hierarchies
C.8
Используйте `class`, а не `struct`, если какой-либо член не является публичным
Причина
Читаемость. Чтобы ясно показать, что что-то скрыто/абстрагировано. Это полезное соглашение.
Пример (плохой)
struct Date {
int d, m;
Date(int i, Month m);
// ... много функций ...
private:
int y; // год
};
С точки зрения правил языка C++ с этим кодом всё в порядке, но с точки зрения дизайна почти всё неправильно. Приватные данные находятся далеко от публичных. Данные разбиты на разные части объявления класса. Разные части данных имеют разный уровень доступа. Всё это снижает читаемость и усложняет сопровождение.
Примечание
Предпочтительно размещать интерфейс первым в классе, см. NL.16.
Контроль
Помечать классы, объявленные как struct, если они содержат private или protected члены.