Чем структура отличается от класса? [дубликат]

325
07 марта 2017, 16:54

На данный вопрос уже ответили:

  • Классы против структур 3 ответа

Так и все же, чем они отличаются? Если только спецификаторами доступа, то зачем для этого нужно было вводить класс?

Answer 1

Если только спецификаторами доступа, то зачем для этого нужно было вводить класс?

Ну так - именно для этого и нужно было. Было принято решение, что умолчательный доступ в классах в С++ должен быть уровня private. А менять умолчательный доступ в struct типах на private было бы чересчур серьезным изменением, убивающим на корню любую обратную совместимость с С. В те времена такая обратная совместимость была важна.

Больше отличий нет. Вы имеет право ссылаться на класс, ранее объявленный с ключевым словом struct, через ключевое слово class (и наоборот)

struct S;
class S
{
  ...
};

в также свободно использовать ключевые слова struct и class в elaborated type specifier независимо от того, как с каким словом класс был объявлен.

Answer 2

Лично я думаю, что это наследие Страуструпова "C с объектами" :)

В конце-концов, все, что можно сделать с float, можно делать и с double - но в языке остались и тот, и другой тип :)

Но с другой стороны, достаточно логично - наличие struct для простого агрегирования данных, и class для выражения объектов с поведением. Чисто для логического разделения этих сущностей. Тех, кто использует struct для классов, надо бить по пальцам так же, как и тех, кто использует class для простой структуры...

Но это не более чем мое мнение.

Answer 3

Повторю частично 1 ответ: У struct все поля по умолчанию public и при наследование по умолчанию public, у class — и то, и другое private.

READ ALSO
Вывод элементов std::map в отладчике

Вывод элементов std::map в отладчике

Пользуюсь gdbНаблюдаемый субъект имеет имя m_loginIndexer

381
Граничные условия и вывод графика

Граничные условия и вывод графика

Продолжение этой темы Ошибки в коде при решении уравнения переноса

263
Поиск больших букв в предложении

Поиск больших букв в предложении

Всем приветКак мне в предложении "Андрусов Анатолий Никифорович пошёл выпить чай у берега Гудзона

248