На данный вопрос уже ответили:
Так и все же, чем они отличаются? Если только спецификаторами доступа, то зачем для этого нужно было вводить класс?
Если только спецификаторами доступа, то зачем для этого нужно было вводить класс?
Ну так - именно для этого и нужно было. Было принято решение, что умолчательный доступ в классах в С++ должен быть уровня private. А менять умолчательный доступ в struct типах на private было бы чересчур серьезным изменением, убивающим на корню любую обратную совместимость с С. В те времена такая обратная совместимость была важна.
Больше отличий нет. Вы имеет право ссылаться на класс, ранее объявленный с ключевым словом struct, через ключевое слово class (и наоборот)
struct S;
class S
{
...
};
в также свободно использовать ключевые слова struct и class в elaborated type specifier независимо от того, как с каким словом класс был объявлен.
Лично я думаю, что это наследие Страуструпова "C с объектами" :)
В конце-концов, все, что можно сделать с float, можно делать и с double - но в языке остались и тот, и другой тип :)
Но с другой стороны, достаточно логично - наличие struct для простого агрегирования данных, и class для выражения объектов с поведением. Чисто для логического разделения этих сущностей. Тех, кто использует struct для классов, надо бить по пальцам так же, как и тех, кто использует class для простой структуры...
Но это не более чем мое мнение.
Повторю частично 1 ответ:
У struct все поля по умолчанию public и при наследование по умолчанию public, у class — и то, и другое private.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей