Визначення автоматично декларується у більшості сценаріїв. Тепер давайте зрозуміємо різницю між визначенням і декларацією з детальною діаграмою порівняння.
Діаграма порівняння
Основа для порівняння | Визначення | Декларація |
---|---|---|
Основний | Визначає значення, що зберігаються в змінній, функції або класі. | Вказує назву та тип змінної, функції, класу тощо. |
Виділення пам'яті | Виникає | Не відбувається. |
Повторення | Вирази не можуть бути визначені знову, якщо вони вже визначені. | Повторна декларація може бути легкою. |
Область застосування | Визначається тривалість | Видимість вказана |
Визначення визначення
Визначення ідентифікує код або дані, пов'язані з ім'ям змінної, функції, класу і т.д. Визначення обов'язково вимагається компілятором для виділення місця зберігання для оголошеного об'єкта. Коли визначена змінна, вона містить кількість пам'яті, що складається з декількох байтів для цієї змінної. Визначення функції дає код функції. Ми можемо визначити елемент програми лише один раз у програмі, оскільки визначення є унікальною специфікацією елемента програми. Взаємозв'язок між декларацією та визначенням може бути один-до-багатьох .
У деяких ситуаціях елемент програми не може бути визначений, але оголошений, наприклад, коли функція ніколи не викликається або її адреса ніколи не використовується, навіть якщо вона оголошена. Іншим прикладом є те, в якому визначення класу не використовується, поки воно має бути оголошено.
Визначення декларації
Декларація використовується для вказівки імен програми, таких як ім'я змінної, функції, простору імен, класів і т.д. Елементи програми можуть бути оголошені кілька разів, на відміну від визначення. Кілька декларацій можуть бути досягнуті тільки тоді, коли різні декларації зроблені з використанням ідентичного формату. Декларація є засобом забезпечення видимості елемента програми в перспективі компіляторів.
Декларація слугує меті визначення, тільки в певних випадках умова не має на увазі, які наведені нижче.
- Коли елемент статичних даних оголошується в декларації класу, у цьому випадку він не є декларацією. Тому що він генерує тільки одну копію для всіх об'єктів класу і статичні члени даних є компонентами об'єктів заданого типу класу.
- Якщо оголошення є оператором typedef.
- Змінна оголошується без ініціалізатора або тіла функції, але включає специфікатори extern. Вона вказує, що визначення може бути для іншої функції і надає назву зовнішньої зв'язку.
- Декларація назви класу без включення визначення, такого як клас T;
Зазвичай, декларація відбувається в масштабі . Область визначає видимість оголошеної назви та визначеної тривалості об'єкта.
Основні відмінності між визначенням та декларацією
- Визначення елемента програми визначає значення, пов'язане з цим елементом. З іншого боку, оголошення елемента програми вказує його назву і тип компілятору.
- Визначення елемента програми резервує деяку кількість пам'яті, тоді як оголошення не передбачає виділення пам'яті.
- Елемент програми може бути оголошений кілька разів. І навпаки, визначення включає в себе унікальну специфікацію з назвою елемента програми, який можна відрізнити за будь-яким кодом або даними.
- Обсяг у декларації описує видимість змінної, функції, об'єкта, класу, перерахування тощо. На відміну від цього, у визначенні область дії стосується тривалості.
Приклад визначення
- Визначення змінної, а також декларація:
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);
Висновок
Процес декларування використовується для того, щоб зробити елемент програми видимим для компілятора, і він не вимагає виділення пам'яті. Обернено визначення є декларацією, що резервує зберігання, простими словами компілятор резервує простір пам'яті для оголошеного об'єкта.