Как правило, я буду использовать структуры для более простых типов данных, начиная от POD до объектов, которые имеют простые функции-члены. Но яркой линии нет, и как только я определю структуру, я обычно не вернусь и не изменю ее на класс только потому, что добавил дополнительные функциональные возможности. Я не вижу в этом никакой ценности.

ервый пост, поэтому, пожалуйста, будьте осторожны со мной!

Я знаю, что нет реальной разницы между структурами и классами в C ++, но многие люди, включая меня, используют структуру или класс, чтобы показать намеренные структуры для группировки «простых старых данных» и классов для инкапсулированных данных, которые имеют значимые операции.

Это хорошо, но в какой момент вы начинаете думать, что что-то уже не просто структура и должно стать классом?

Вещи, которые я считаю разумными для структур:

конструкторы только с простым кодом инициализации.код сериализации, такой как операторы вставки / извлечения потока.

Вещи, в которых я не так уверен, но вероятно сделаю:

операторы сравненияПростые функции преобразования - например, байтовая выгрузка всех элементов после получения данных из внешнего источника.

Я не думаю, что структуры должны иметь:

динамическое распределение памяти.деструктор.сложные функции-члены.

Где лежат границы ???

Кроме того, разумно ли иметь экземпляры классов в качестве членов структуры? например

class C {private: int hiddenData; public: void DoSomething();};

struct S {int a; float b; C c; };

S s; s.c.DoSomething();

Помните, я не о том, что вы МОЖЕТЕ делать с C ++, мне интересно, что вы ДОЛЖНЫ делать при разработке хорошего программного обеспечения.

Мысли?

Ответы на вопрос(1)

Ваш ответ на вопрос