Рекомендуємо, 2022

Вибір Редакції

Різниця між структурою та класом

Як структура, так і клас надають можливість створити індивідуальний тип даних, який можна використовувати для створення примірників. C ++ розширює роль структури для створення класу. Як структура, так і клас, схожі в усьому, окрім однієї різниці, що структура за замовчуванням має всіх її членів як "public", а клас за замовчуванням має всіх його членів "private". Давайте вивчимо різницю між структурою та класом, використовуючи діаграму порівняння.

Діаграма порівняння

Основа для порівнянняСтруктураКлас
ОсновнийЯкщо специфікатор доступу не оголошений, за умовчанням всі члени є "public".Якщо специфікатор доступу не оголошений, за замовчуванням всі члени є "приватними".
Деклараціяstruct structure_name {
тип struct_element 1;
тип struct_element 2;
тип struct_element 3;
.
.
.
};
class class_name {
член даних;
функція-член;
};
ПримірникЕкземпляр 'структури' називається 'змінною структури'.Екземпляр 'класу' називається 'об'єктом'.

Визначення структури

Структура - це сукупність змінних різнорідних типів даних, на які посилається одне ім'я. Декларація структури формує шаблон, який використовується для створення екземпляра структури. Структура оголошується наступним чином.

 struct sname {тип struct_element1; тип struct_element2; тип struct_element3; . . . } variable1, variable2, . . .; 

Ключове слово "struct" визначає для компілятора, що структура оголошується. 'Sname' являє собою назву, дану структурі. Декларація структури завжди завершується крапкою з комою, оскільки вона розглядається як оператор. Ви можете оголосити екземпляри структури перед його завершенням, як це зроблено у вищезгаданому коді (variable1, variable2), або можете оголосити примірник структури в main (), написавши ім'я екземпляра, що передує назві структури.

 // приклад. main () {sname S1, S2; } 

Тут S1 і S2 є екземплярами структури. Приклади структури називаються “змінною структури”. Елемент, оголошений всередині тіла структури, може бути доступний через змінні структури за допомогою оператора dot (.).

 // приклад S1. struct_element1; 
  • Масив структури також може бути створений, для цього спочатку потрібно оголосити структуру, а потім оголосити масив такого типу.
 // зразок структури sname sarray [10]; 

Вищенаведене твердження створює масив з назвою 'sarray', що містить десять змінних, і кожна змінна організована, як визначено в 'sname'.

  • Ви можете передати елемент структури до функції, і ви можете передати цілу структуру функції.
  • Подібно до цілочисельного покажчика, покажчика масиву, структурний покажчик можна також оголосити, помістивши '*' у передню частину імені змінних структури.
 // зразок struct sname * S1; 

Примітка:

Елементи "структуру" зберігаються в безперервному місці пам'яті.

Визначення класу

Клас в ООП визначає новий тип, який містить елементи даних і функцію-член, які використовуються для доступу до даних членів класу. Екземпляри класів називаються «об'єктами», кожна з яких має ту ж саму організацію, що і клас. Клас є логічною абстракцією, тоді як об'єкт має фізичне існування. Клас синтаксично схожий зі структурою. Клас можна оголосити наступним чином.

 class class_name {приватні дані членів і функції-члени. access_specifier тип data_member; введіть mem_funct (список параметрів) {. . }} список об'єктів; 

Тут клас - це ключове слово, яке оголошує компілятору, що клас був оголошений. Головною особливістю ООП є приховування даних, яке здійснюється шляхом надання трьох специфікаторів доступу, які є «публічними», «приватними», «захищеними». Якщо ви не вказуєте будь-який специфікатор доступу в класі при оголошенні членів даних або функцій-членів, за замовчуванням всі вважаються приватними. Специфікатор публічного доступу дозволяє, функції або дані доступні для інших частин вашої програми. Доступ до приватних членів класу може здійснювати тільки член цього класу. Під час успадкування застосовується специфікатор захищеного доступу. Як тільки ви оголосите специфікатор доступу, він не може бути змінений протягом всієї програми.

Об'єкти не є нічим іншим, як екземпляр класів. До учасників класу звертаються об'єкт одного класу, використовуючи оператор dot (.).

 //object.mem_funct (аргументи); 
  • Об'єкт також може бути переданий як аргумент функції.
  • Також може бути створений покажчик на об'єкт.

Основні відмінності між структурою та класом

  1. Основна відмінність між структурами і класами полягає в тому, що за замовчуванням всі члени структури є публічними, тоді як за замовчуванням всі члени класу є приватними.

Подібності:

  • У C ++ структура і клас є синтаксично еквівалентними.
  • Як структура, так і клас можуть оголосити, що деякі їх члени є приватними.
  • Ім'я структури або класу можна використовувати як автономний тип.
  • Як структура, так і клас підтримують механізм успадкування.

Висновок:

Структура в C мала деякі обмеження, оскільки структура не дозволяє приховування даних, тип даних "struct" не можна розглядати як вбудовані типи, структури не підтримують спадкування. Структура в C ++ подолала ці обмеження. У C ++ класи є розширеною версією структури. Програміст легко знаходить використання класу для зберігання даних і функціонування обох і структури тільки для зберігання даних.

Top