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