Перш ніж зрозуміти різницю між класом і структурою, ми повинні знати кілька основних понять, пов'язаних з ними. Без розуміння понять важко зрозуміти відмінності між ними.
Це дві важливі концепції, пов’язані з об'єктно-орієнтованим програмуванням, і вони складають основу для обрамлення функцій та передачі даних до інших функцій. Для кращого розуміння ми можемо співвіднести це із прикладом реального життя. Клас можна розглядати як магазин, а Об'єктом може бути будь-який з окремих, конкретних магазинів, таких як продуктові товари, канцтовари, фрукти тощо. Усі об'єкти мають спільні властивості основного класу - магазину -, і, в свою чергу, об’єкти можуть мати власні ексклюзивні властивості, такі як конкретна конструкція, освітлення тощо. Через об'єкти ми можемо реально використовувати клас; вони утворюють екземпляри класу.
Синтаксис класу
Класний магазин
громадські струнні речі;
громадська струнна конструкція;
Синтаксис об’єкта
Магазин продуктових товарів = новий магазин ();
Магазин канцтоварів = новий магазин ();
Структура включає лише дані, і тому корисно формувати окремі вимоги до даних за допомогою об'єктів Struct. На відміну від класу, йому не вистачає функцій. Ось його синтаксис:
struct grocery_entrance
char entry_name [50];
int entry_size;
бакалійний_нахід;
Усі магазини можуть використовувати «вхід» Struct з окремими назвами та розмірами.
Це схоже на те, як син успадковує володіння свого батька, і, в свою чергу, син також може додавати деякі власні володіння. Клас може бути або базовим класом, або похідним класом, у якому перший може бути прийнятий за основу для формування останнього. Похідний клас додає мало інших властивостей для себе, крім того, що він отримує від базового класу. Якщо ми розглянемо наведений вище приклад, продуктовий магазин все ще може бути відведений до конкретного продуктового магазину, такого як продуктовий магазин XYZ.
Тепер, коли ми знайомі з основними поняттями, ми можемо перейти до фактичної різниці між класом та структурою.
Demo obj = новий Demo ();
Це означає, що ми повинні використовувати ключове слово "new" під час створення об'єктів класу. Це не потрібно при створенні об'єктів Structs. Просто погляньте на їх синтаксис:
Demo obj;
Це чудово працює навіть без ключового слова "new".
Оскільки класи більш гнучкі в передачі даних та функцій разом, ми можемо використовувати це, коли використовувані об'єкти є складними та великими. У нашому прикладі Mall може використовувати клас "store" для кращого вираження системи. Однак структури обмежуються лише меншими об'єктами, оскільки вони порівняно менш ефективні, ніж класи. Тому, якщо ви проектуєте власний магазин, Structs - кращий вибір.
Можливо, ви чули терміни "бокс" і "розпакування" для перетворення структури в клас, і навпаки. Хоча це ефективні процеси, які допомагають нам у перетворенні, з ними слід поводитися обережно. Оскільки це безпосередньо впливає на місця пам'яті, це робить величезний вплив на продуктивність нашої системи. Більше того, це впливає на процеси вивезення сміття та призводить до загальної неефективності системи. Тому використовуйте ці перетворення лише в разі потреби.
Давайте розглянемо вищезазначені відмінності в табличній формі.
S.No | Поняття | Відмінності | |
Клас | Структуру | ||
1 | Повторне використання | Повністю повторно використаний | Не можна використовувати повторно |
2 | Видимість | Усі функції класу видно його об'єктам | Дані Об'єкта Структури не є видимими для інших об'єктів тієї самої Структури |
3 | Пройти по довідці та пройти за вартістю | Використання пройти по довідці | Використання проходить за вартістю |
4 | Спадщина | Функції класу можуть бути успадковані за його підкласами; дозволяє успадкування | Ніколи не допускає спадкування |
5 | Видимість за замовчуванням | Усі члени класу за замовчуванням приватні | Усі члени Структу за замовчуванням є загальнодоступними |
6 | Розмір, коли порожній | Розмір порожнього класу - 1 байт | Розмір порожньої структури - 0 байт |
7 | Збір сміття | Оскільки він використовує пропускний код, збирання сміття можливе | Оскільки він використовує пропускне значення, збирання сміття неможливе |
8 | Управління пам'яттю | Простота процесу вивезення сміття допомагає ефективному керуванню пам’яттю | Відсутність сміття призводить до поганого управління пам’яттю |
9 | Конструктори | Дозволяє конструкторам усіх типів, наприклад, з параметрами або без них | Дозволяє лише параметризовані конструктори |
10 | Деструктори | Можна використовувати | Неможливо використовувати його |
11 | Ініціалізація змінних учасників | Дозволяє пряму ініціалізацію змінних членів | Не дозволяє пряму ініціалізацію слів змінних членів |
12 | Створення об'єкта | Під час створення об'єкта обов'язково потрібно використовувати ключове слово "new" | Необов’язково використовувати ключове слово "new" під час створення об'єкта |
13 | Коли використовувати? | Краще для більших і складних об'єктів, де потрібно успадкування | Краще для менших і простіших об'єктів, де успадкування має менше значення. |
Ми майже покрили всі відмінності між Class та Struct, і якщо ви відчуваєте, що чогось не вистачає, будь ласка, повідомте нас про це. Давайте вчимось разом і максимально скористаємось цими знаннями!