отличие структуры от класса c



Отличие класса от структуры c

Автор Valera Balberov задал вопрос в разделе Другие языки и технологии

Язык С++. Чем отличаются структуры от классов? и получил лучший ответ

Ответ от Andrey[гуру]
И я всё же скажу, что структура это статика, это просто набор данных объединённых общим свойством. В отличии от класса, который описывает методы доступа к данным данным, т. е. содержит динамическую составляющую.
ИМХО это главное идейное отличие. Класс - набор данных и методов для работы с этими данными, а структура просто набор данных.

Ответ от Ёыроежка[гуру]
Тут Девушка-Весна отвечала достаточно подроюно, но ее ответ не совсем корректный. Например, она пишет:
"У классов этого тоже может не быть, но тогда нет возможности использовать объект данного класса "
Этог ничто иное, как ГЛУПОСТЬ! (И, вот такие незнайки еще учат других!: ) ) На самом деле если у класса нет конструктора, то компилятор сам для него генерирует конструктор. Кроме того методы класса совершенно необязательны! Класс может вообще только содержать определения типов данных для использования этих определений в производных классах.
Теперь по существу вопроса. Дело в том, что язык С++ произошел от языка С. Язык С уже имел такой агрегированный тип данных, как структура. Когда родоначальник языка С++ Бъёрн Страуструп решил ввести классы в С, то взял за основу уже готовый тип данных - структуру. Единственное, что он сделал, это с помощью макрокоманд формально закрыл доступ к членам струкутры, и чтобы отличать свою конструкцию от базового типа, то есть структуры, на основе которой он строил классы, он назвал свою конструкцию классом. То есть он внес новую парадигму, новый смысл, используя на уровне кода обычную структуру. То есть концептуально класс это было другое понятие, в которое были вложены другие идеи, а конструктивно, это была обычная структура.
Затем с развитием языка С++ стало уже на уровне самого языка, а не на уровне макрокоманд, делатиься различие между классом и структорой. То есть в С++ появился новый тип данных - класс, который уже имел самостоятельную реализацию, а не был построен на основе структуры.
Как Девушка-Весна правильно заметила в С++ структуры имеют по умолчанию все члены открытыми, тогда как классы имеют по умолчанию все члены класса являются закрытыми. В С++ структуры сохранили те новшества, которые ввел Бъёрн, то есть конструкторы, деструкторы, методы и т. д.
Поэтоу в С++ вы можете использовать структуры как в старом стиле в языке С, так и в новом стиле языка С++.
Поэтому в стиле языка С++ структуры и классы взаимозаменяемы. Часто классы, которые имеют открытые члены данных объявляют как структуры, чтобы лишний раз для этих членов не писать слово public (вы помните, что у классов по умолчанию члены данных имеют доступ private).
Вот и все различие!:)

Ответ от Cooler[гуру]
Классы главным образом отличаются от структур наличием указателя this

Ответ от Девушка Весна[гуру]
Практически не чем не отличаются 🙂
Своим студентам я говорю, что структуру можно воспринимать как вырожденый клас.. .
НО! если бы совсем отличий не было, то и огород городить не надо было бы :-))
1. Поля структуры ВСЕГДА public, а поля класса по умолчанию private (это правильно с точки зрения принципа инкапсуляции)
2. Как правило (это не означает, что этого не может быть) структуры не имеют конструкторов и методов. У классов этого тоже может не быть, но тогда нет возможности использовать объект данного класса
ну где то так.. . :-))

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Язык С++. Чем отличаются структуры от классов?
C++ на Википедии
Посмотрите статью на википедии про C++
Класс программирование на Википедии
Посмотрите статью на википедии про Класс программирование
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*