На данный вопрос уже ответили:
Так и все же, чем они отличаются? Если только спецификаторами доступа, то зачем для этого нужно было вводить класс?
Если только спецификаторами доступа, то зачем для этого нужно было вводить класс?
Ну так - именно для этого и нужно было. Было принято решение, что умолчательный доступ в классах в С++ должен быть уровня 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
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Продолжение этой темы Ошибки в коде при решении уравнения переноса
Всем приветКак мне в предложении "Андрусов Анатолий Никифорович пошёл выпить чай у берега Гудзона