в чём отличие struct от class?

Компьютеры программирование C++

Собственно, прочитав "Язык программирования С++ Cтрауструп" и посетив несколько ссылок в сети интернет, остановился на том, что единственное отличие структуры от класса в том, что члены структуры по умолчанию относятся к разделу public, а у класса переменные и константы по умолчанию private, всё остальное public. Где-то нашёл объяснение, что структуры были оставлены для совместимости с Си и поля соответственно по умолчанию public, для того чтобы не надо было переписывать огромное количество программ. Но если это единственное отличие, то зачем нужно было придумывать такое понятие как класс?
Ответы:
Практически ни в чем. В struct модификаторы доступа по умолчанию public, в class private. Также отличается и наследование по умолчанию, у struct — public, у class — private.
Пример:
Есть еще одно отличие - если не указано, как наследоваться, то стракты по умолчанию наследуются публично, а классы по умлочаниюнаследуются со спецификацией протектед.
Кроме описанного еще одно отличие в том что при объявлении переменной типа структура необходимо каждый раз писать ключевое слово struct. Это было сделано в свое время для экономии ресурсов компилятором. К моменту появления С++ стало понятно что это крайне неудобно и было введено новое ключевое слово, которое не имело старых ограничений.
Все же таки наследование по умолчанию (не путать с доступом по умолчанию) у класса protected, а не public. В остальном Пикулин Руслан всё правильно написал.


10 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.