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

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

Різниця між визначенням і декларацією

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

Визначення автоматично декларується у більшості сценаріїв. Тепер давайте зрозуміємо різницю між визначенням і декларацією з детальною діаграмою порівняння.

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

Основа для порівнянняВизначенняДекларація
ОсновнийВизначає значення, що зберігаються в змінній, функції або класі.Вказує назву та тип змінної, функції, класу тощо.
Виділення пам'ятіВиникаєНе відбувається.
ПовторенняВирази не можуть бути визначені знову, якщо вони вже визначені.Повторна декларація може бути легкою.
Область застосуванняВизначається тривалістьВидимість вказана

Визначення визначення

Визначення ідентифікує код або дані, пов'язані з ім'ям змінної, функції, класу і т.д. Визначення обов'язково вимагається компілятором для виділення місця зберігання для оголошеного об'єкта. Коли визначена змінна, вона містить кількість пам'яті, що складається з декількох байтів для цієї змінної. Визначення функції дає код функції. Ми можемо визначити елемент програми лише один раз у програмі, оскільки визначення є унікальною специфікацією елемента програми. Взаємозв'язок між декларацією та визначенням може бути один-до-багатьох .

У деяких ситуаціях елемент програми не може бути визначений, але оголошений, наприклад, коли функція ніколи не викликається або її адреса ніколи не використовується, навіть якщо вона оголошена. Іншим прикладом є те, в якому визначення класу не використовується, поки воно має бути оголошено.

Визначення декларації

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

Декларація слугує меті визначення, тільки в певних випадках умова не має на увазі, які наведені нижче.

  • Коли елемент статичних даних оголошується в декларації класу, у цьому випадку він не є декларацією. Тому що він генерує тільки одну копію для всіх об'єктів класу і статичні члени даних є компонентами об'єктів заданого типу класу.
  • Якщо оголошення є оператором typedef.
  • Змінна оголошується без ініціалізатора або тіла функції, але включає специфікатори extern. Вона вказує, що визначення може бути для іншої функції і надає назву зовнішньої зв'язку.
  • Декларація назви класу без включення визначення, такого як клас T;

Зазвичай, декларація відбувається в масштабі . Область визначає видимість оголошеної назви та визначеної тривалості об'єкта.

Основні відмінності між визначенням та декларацією

  1. Визначення елемента програми визначає значення, пов'язане з цим елементом. З іншого боку, оголошення елемента програми вказує його назву і тип компілятору.
  2. Визначення елемента програми резервує деяку кількість пам'яті, тоді як оголошення не передбачає виділення пам'яті.
  3. Елемент програми може бути оголошений кілька разів. І навпаки, визначення включає в себе унікальну специфікацію з назвою елемента програми, який можна відрізнити за будь-яким кодом або даними.
  4. Обсяг у декларації описує видимість змінної, функції, об'єкта, класу, перерахування тощо. На відміну від цього, у визначенні область дії стосується тривалості.

Приклад визначення

  • Визначення змінної, а також декларація:
    int r = 10;
  • Визначення функції:
     int add (int x, int y) {int a; a = x + y; return a; } 

Приклад декларації

  • Декларація змінних:
    extern int r;
  • Декларація функції:
    int add (int p1, int p2);

Висновок

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

Top