Разница между классом и структурой в С++

Давно мучает этот вопрос, ведь, очевидно, что разница не только в том, какой доступ предоставляется по-умолчанию (без модификаторов доступа) к элементам классов и структур. В стандартной библиотеке есть как классы, так и структуры, например, std::array — это структура, а std::vector — класс. Мне кажется, что разработчики стандартной библиотеки руководствовались при выборе чем-то объективным. В других языках структуры отвечают за value type, а классы за reference type, но, как я понимаю, к С++ это не относится.


Ответы (1 шт):

Автор решения: HolyBlackCat

разница не только в том, какой доступ предоставляется по-умолчанию (без модификаторов доступа) к элементам классов

Не только к членам, еще к родителям без модификатора доступа. Другой разницы нет.

Строго говоря, структур в языке вообще нет, и слово struct создает класс.

std::array — это структура, а std::vector — класс

Выбирают на глазок.

С++ core guidelines (там иногда пишут странные вещи, но здесь я с ними в целом согласен) предлагают два критерия:

→ Ссылка