Мой первый пост, поэтому, пожалуйста, пройдите ко мне!
Я знаю, что нет никакой реальной разницы между структурами и классами на С++, но многие люди, включая меня, используют структуру или класс, чтобы показать намерения - структуры для группировки "простых старых данных" и классов для инкапсулированных данных, которые имеют значимые операции.
Теперь, это прекрасно, но в какой момент вы начинаете думать, что что-то не просто структура больше и должно стать классом?
Вещи, которые, по моему мнению, разумны для структур:
- только с простым кодом инициализации.
- код сериализации, такой как операторы вставки/извлечения потока.
Вещи, о которых я не очень уверен, но, вероятно, сделаю:
- Операторы сравнения
- Простые функции преобразования - например, байты, собирая все элементы после получения данных из внешнего источника.
Я не думаю, что структуры должны иметь:
- распределение динамической памяти.
- деструктор.
- сложные функции-члены.
Где границы лежат?
Кроме того, разумно ли иметь экземпляры класса как члены структуры? например.
class C {private: int hiddenData; public: void DoSomething();};
struct S {int a; float b; C c; };
S s; s.c.DoSomething();
Помните, я не о том, что вы МОЖЕТЕ делать с С++, меня интересует то, что вам следует делать при разработке хорошего программного обеспечения.
Мысли?