Разница между классом и структурой (с таблицей)

Оглавление:

Anonim

Вопрос о том, использовать ли класс или структуру, часто встречается среди программистов на C ++ при разработке кода. Среди самых молодых разработчиков существует облако неправильного представления о разнице между классом и структурой с технической точки зрения. Даже после понимания различий разработчики иногда расходятся во мнениях относительно более подходящего кода.

В.NET обычно есть две категории типов: класс - это ссылочный тип, а структура - это тип значения. Тип ссылки в основном живет в куче, тогда как тип значения живет в строке. В этой статье можно прояснить некоторые другие различия.

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

Основное различие между классом и структурой заключается в том, что класс - это ссылочный тип, который размещается в куче, а также сборщик мусора. С другой стороны, структура - это тип значения, который выделяется либо во встроенном, либо в стеке содержащих типы.

Класс, представленный в C ++, очень похож на структуру C. Он состоит из списка элементов данных и набора операций, обычно выполняемых над классом. Можно сказать, что в объектно-ориентированном программировании строительным блоком является класс. Класс также похож на план объекта.

Структура - это тип данных типа значения. Это помогает сделать так, чтобы одна переменная содержала связанные данные нескольких типов. При создании структуры используется ключевое слово «структура». Когда объект структуры создается с использованием оператора new, вызывается соответствующий конструктор, и он создается.

Таблица сравнения между классом и структурой

Параметры сравнения Класс Struct
Видимость по умолчанию Частный Общественные
Размер в пустом состоянии 1 байт 0 байт
Инициализация переменных-членов Позволяет Не позволяет
Вывоз мусора Возможно, потому что он использует передачу по ссылке Невозможно, потому что он использует передачу по значению
Повторное использование Полностью Нет

Что такое класс?

В программировании на C ++ класс - это структура данных или определяемый пользователем тип, членами которого являются функции и данные. По умолчанию доступ является частным для членов класса C ++. Частные члены не могут получить доступ за пределами класса и могут быть доступны только через методы класса. В классе разрешено наследование, потому что его функция может быть унаследована его подклассами.

Экземпляры типов данных класса известны как объекты. Он может содержать функции-члены, перегруженные операторы и переменные константы, определенные программистом. С помощью шаблонов классов можно сгенерировать объявление класса. Эти шаблоны классов представляют собой семейство классов.

Объявление фактического класса получается путем создания экземпляра шаблона с одним или несколькими аргументами шаблона. Специализация шаблона определяется как создание экземпляра шаблона с определенным набором аргументов. Синтаксис C ++ пытается сделать структуры, каждый аспект которых похож на основные типы данных.

У классов C ++ есть свои члены. Члены классов объявлены как частные или публично доступные спецификаторами соответственно. После спецификатора, если какой-либо встреченный член будет иметь связанный доступ, если не встретится другой спецификатор.

Что такое Struct?

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

С точки зрения языка программирования C, это объявление составного типа данных. Обычно он определяет сгруппированный список физических переменных под одним именем в блоке памяти. Он позволяет получить доступ к различным переменным через одну точку или через объявленное имя структуры, которое возвращает одинаковый адрес.

Структура может содержать другие типы данных, чтобы ее можно было использовать для записей со смешанным типом данных или другими смешанными типами. В C он ссылается на непрерывный блок физической памяти, обычно ограниченный границами длины слова. В результате каждое поле с самого начала располагается с фиксированным определенным смещением.

Когда дело доходит до языка C ++, структура похожа на класс C ++, но видимость по умолчанию сильно отличается. Он может быть размещен динамически или статически размещен либо в куче, либо в стеке с явным указателем. Видимость структуры по умолчанию в C ++ является частной.

Основные различия между классом и структурой

Вывод

Можно сделать вывод, что и класс, и структура распространены среди программистов на C ++. Класс - это ссылочный тип, который размещается в куче, а также при сборке мусора. С другой стороны, структура представляет собой тип значения, который выделяется либо во встроенных, либо в стеке содержащих типы.

Когда дело доходит до видимости, видимость по умолчанию является частной в классе, а в структуре - общедоступной. Сборка мусора возможна в классе, потому что он использует передачу по ссылке. С другой стороны, в структуре сборка мусора невозможна, потому что она использует передачу по значению. Размер класса составляет 1 байт, когда он пустой, а в выбранном - 0 байтов.

использованная литература

Разница между классом и структурой (с таблицей)