Definicja jest automatycznie deklaracją w większości scenariuszy. Rozumiemy teraz różnicę między definicją i deklaracją a szczegółową tabelą porównawczą.
Wykres porównania
Podstawa do porównania | Definicja | Deklaracja |
---|---|---|
Podstawowy | Określa wartość przechowywaną w zmiennej, funkcji lub klasie. | Określa nazwę i typ zmiennej, funkcji, klasy itp. |
Przydzielanie pamięci | Występuje | Nie ma miejsca. |
Powtórzenie | Oświadczenia nie mogą być zdefiniowane ponownie, jeśli raz jest już zdefiniowany. | Redeclaracja może być łatwo możliwa. |
Zakres | Czas trwania jest ustalany | Widoczność jest określona |
Definicja definicji
Definicja identyfikuje kod lub dane związane z nazwą zmiennej, funkcji, klasy itp. Definicja jest koniecznie wymagana przez kompilator do przydzielenia przestrzeni pamięci dla zadeklarowanej jednostki. Gdy zmienna jest zdefiniowana, zawiera ilość pamięci składającą się z kilku bajtów dla tej zmiennej. Definicja funkcji generuje kod funkcji. Możemy zdefiniować element programu tylko raz w programie, ponieważ definicja jest unikalną specyfikacją elementu programu. Związek między deklaracją a definicją może być jeden do wielu .
W niektórych sytuacjach element programu nie może być zdefiniowany, ale zadeklarowany, na przykład, gdy funkcja nigdy nie jest wywoływana lub jej adres nigdy nie jest używany, nawet jeśli jest zadeklarowany. Innym przykładem jest to, że definicja klasy nie jest używana, gdy musi być zadeklarowana.
Definicja deklaracji
Deklaracja służy do określania nazw programu, takich jak nazwa zmiennej, funkcji, przestrzeni nazw, klas itp. W programie nie można używać nazwy bez jej deklaracji. Elementy programu można zadeklarować wiele razy, w przeciwieństwie do definicji. Wiele deklaracji można osiągnąć tylko wtedy, gdy różne deklaracje są dokonywane przy użyciu identycznego formatu. Deklaracja jest medium zapewniającym widoczność elementu programu w perspektywie kompilatorów.
Deklaracja służy do definicji, tylko w niektórych przypadkach warunek ten nie jest domyślny, który podano poniżej.
- Kiedy statyczny element danych jest zadeklarowany w deklaracji klasy, w takim przypadku nie jest deklaracją. Ponieważ generuje tylko jedną kopię dla wszystkich obiektów klasy, a statyczne elementy danych są składnikami obiektów podanego typu klasy.
- Jeśli deklaracja jest instrukcją typef.
- Zmienna jest zadeklarowana bez inicjatora lub treści funkcji, ale zawiera specyfikatory zewnętrzne. Wskazuje, że definicja może dotyczyć innej funkcji i określa nazwę połączenia zewnętrznego.
- Deklaracja nazwy klasy bez uwzględniania definicji takiej jak klasa T;
Zwykle deklaracja odbywa się w zakresie . Zakres decyduje o widoczności zadeklarowanej nazwy i zdefiniowanym czasie trwania obiektu.
Kluczowe różnice między definicją a deklaracją
- Definicja elementu programu określa wartość powiązaną z tym elementem. Z drugiej strony deklaracja elementu programu określa jego nazwę i typ dla kompilatora.
- Definicja elementu programu zastrzega pewną ilość pamięci, podczas gdy deklaracja nie obejmuje alokacji pamięci.
- Element programu można zadeklarować wiele razy. Odwrotnie, definicja zawiera unikalną specyfikację z nazwą elementu programu, którą można rozróżnić za pomocą dowolnego kodu lub danych.
- Zakres w deklaracji opisuje widoczność zmiennej, funkcji, obiektu, klasy, wyliczenia itp. Natomiast w definicji zakres dotyczy czasu trwania.
Definicja Przykład
- Definicja zmienna oraz deklaracja:
int r = 10;
- Definicja funkcji:
int dodaj (int x, int y) {int a; a = x + y; return a; }
Przykład deklaracji
- Deklaracja zmiennej:
extern int r;
- Deklaracja funkcji:
int add (int p1, int p2);
Wniosek
Proces deklaracji służy do tego, aby element programu był widoczny dla kompilatora i nie wymaga przydzielania pamięci. Odwrotna definicja to deklaracja przechowująca rezerwę, w prostych słowach kompilator rezerwuje miejsce pamięci dla zadeklarowanej jednostki.