Прежде чем мы поймем разницу между классом и структурой, мы должны знать несколько основных понятий, связанных с ними. Без понимания концепций трудно понять различия между двумя.
Это две важные концепции, связанные с объектно-ориентированным программированием, и они составляют основу для формирования функций и передачи данных другим функциям. Для лучшего понимания мы можем соотнести его с реальным примером. Класс можно рассматривать как хранилище, а Объектом может быть любое из отдельных, конкретных магазинов, таких как продуктовые, канцелярские товары, фрукты и т. Д. Все объекты имеют общие свойства основного класса - магазина - и, в свою очередь, объекты могут иметь свои собственные эксклюзивные свойства, такие как определенный дизайн, освещение и т. д. Через объекты мы можем фактически использовать класс; они образуют экземпляры класса.
Синтаксис класса
Class Store
общедоступные струнные вещи;
публичный струнный дизайн;
Синтаксис объекта
Магазин продуктов = новый магазин ();
Store Stationery = новый магазин ();
Struct включает в себя только данные, и поэтому он полезен при формировании индивидуальных требований к данным с помощью объектов Struct. В отличие от класса, ему не хватает функций. Вот его синтаксис:
struct grocery_entrance
char entry_name [50];
int entry_size;
grocery_entrance;
Все магазины могут использовать вход «Struct» с индивидуальными именами и размерами..
Это похоже на то, как сын наследует имущество своего отца, и, в свою очередь, сын может также добавить некоторые другие свои собственные вещи. Класс может быть либо базовым классом, либо производным классом, в котором первый может быть взят за основу для формирования второго. Производный класс добавляет несколько других свойств для себя, кроме того, что он получает от базового класса. Когда мы рассмотрим приведенный выше пример, продуктовый магазин все еще может быть преобразован в конкретный продуктовый магазин, такой как продуктовый магазин XYZ..
Теперь, когда мы знакомы с основными понятиями, мы можем перейти к реальной разнице между классом и структурой.
Demo obj = new Demo ();
Это означает, что мы должны использовать ключевое слово «new» при создании объектов класса. Это не требуется при создании объектов Structs. Просто взгляните на их синтаксис:
Демо объект;
Он отлично работает даже без ключевого слова «новый».
Поскольку классы более гибки в совместном использовании данных и функций, мы можем пойти на это, когда используемые объекты являются сложными и большими. В нашем примере торговый центр может использовать класс «магазин» для лучшего представления системы. Структуры, однако, ограничены меньшими объектами, так как они сравнительно менее эффективны, чем классы. Поэтому, если вы разрабатываете собственный магазин, Structs - лучший выбор..
Возможно, вы слышали термины «бокс» и «распаковка» для преобразования Struct в класс, и наоборот. Хотя это эффективные процессы, помогающие нам в обращении, к ним следует относиться с осторожностью. Поскольку это напрямую влияет на области памяти, это оказывает огромное влияние на производительность нашей системы. Кроме того, это влияет на процессы сбора мусора и приводит к общей неэффективности системы. Поэтому используйте эти преобразования только при необходимости.
Давайте посмотрим на вышеупомянутые различия в табличной форме.
S.No | Концепции | Различия | |
Учебный класс | Struct | ||
1 | Повторное удобство и простота использования | Полностью повторное использование | Не может использоваться повторно |
2 | видимость | Все функции класса видны его объектам | Данные объекта структуры не видны другим объектам той же структуры |
3 | Передать по ссылке и передать по значению | Использует Pass by Reference | Использует проход по значению |
4 | наследование | Функции класса могут наследоваться его подклассами; позволяет наследование | Никогда не разрешает наследование |
5 | Видимость по умолчанию | Все члены класса являются закрытыми по умолчанию | Все члены структуры по умолчанию общедоступны |
6 | Размер когда пусто | Размер пустого класса - 1 байт. | Размер пустой структуры составляет 0 байт. |
7 | Вывоз мусора | Поскольку он использует передачу по ссылке, сборка мусора возможна | Поскольку используется передача по значению, сборка мусора невозможна |
8 | Управление памятью | Простота процесса сбора мусора помогает в эффективном управлении памятью | Отсутствие сборки мусора приводит к плохому управлению памятью |
9 | Конструкторы | Позволяет конструкторам всех типов, например, с параметрами или без параметров | Разрешены только параметризованные конструкторы |
10 | деструкторы | Можно использовать | Не могу использовать это |
11 | Инициализация переменных-членов | Позволяет прямую инициализацию переменных-членов | Не разрешает прямую инициализацию слов переменных-членов |
12 | Создание объекта | При создании объекта необходимо использовать ключевое слово «новый» | Необязательно использовать ключевое слово «новый» при создании объекта |
13 | Когда использовать? | Лучше для больших и сложных объектов, где требуется наследование | Лучше для небольших и простых объектов, где наследование имеет меньшее значение. |
Мы почти рассмотрели все различия между Class и Struct, и если вы чувствуете, что чего-то не хватает, сообщите нам. Давайте учиться вместе и максимально использовать эти знания!