Definice je automaticky deklarací ve většině scénářů. Pojďme pochopit rozdíl mezi definicí a deklarací s podrobným srovnávacím grafem.
Srovnávací graf
Základ pro srovnání | Definice | Prohlášení |
---|---|---|
Základní | Určuje hodnotu uloženou v proměnné, funkci nebo třídě. | Určuje název a typ proměnné, funkce, třídy atd. |
Přidělení paměti | Vyskytne se | Neprovádí se. |
Opakování | Příkazy nelze definovat znovu, pokud je již definováno. | Zrušení může být snadno možné. |
Rozsah | Stanoví se doba trvání | Je uvedena viditelnost |
Definice definice
Definice identifikuje kód nebo data spojená s názvem proměnné, funkce, třídy, atd. Definice je nutně nutná kompilátorem alokovat úložný prostor pro deklarovanou entitu. Když je proměnná definována, uchovává množství paměti sestávající z několika bytů pro tuto proměnnou. Definice funkce vytváří kód funkce. V programu můžeme definovat programový prvek pouze jednou, protože definice je jedinečná specifikace programového prvku. Vztah mezi deklarací a definicí může být mnohostranný .
V některých situacích nemůže být prvek programu definován, ale deklarován, například když funkce není nikdy vyvolána nebo jeho adresa není nikdy použita, i když je deklarována. Jiným příkladem je to, ve kterém definice třídy není použita, zatímco musí být deklarována.
Definice prohlášení
Deklarace slouží k určení názvů programu, jako je název proměnné, funkce, jmenný prostor, třídy atd. V programu bez jeho deklarace nelze použít žádný název. Programové prvky mohou být deklarovány vícekrát, na rozdíl od definice. Více deklarací může být dosaženo pouze tehdy, když jsou různá prohlášení vytvořena s použitím identického formátu. Deklarace je prostředkem zajištění viditelnosti programového prvku z pohledu kompilátorů.
Prohlášení slouží k definici, pouze v určitých případech není podmínka uvedena, která je uvedena níže.
- Když je statický datový člen deklarován uvnitř deklarace třídy, v tomto případě se nejedná o deklaraci. Protože generuje pouze jednu kopii pro všechny objekty třídy a statické datové členy, jsou součástí objektů daného typu třídy.
- Pokud je deklarace příkazem typedef.
- Proměnná je deklarována bez inicializátoru nebo funkce, ale obsahuje externí specifikátory. Označuje, že definice může být pro jinou funkci a poskytuje externí spojení.
- Deklarace názvu třídy bez definice, jako je třída T;
Obvykle se prohlášení provádí v rozsahu . Rozsah určuje viditelnost deklarovaného jména a trvání definovaného objektu.
Klíčové rozdíly mezi definicí a deklarací
- Definice prvku programu určuje hodnotu přidruženou k tomuto prvku. Na druhé straně deklarace programového prvku specifikuje jeho název a typ pro kompilátor.
- Definice prvku programu si vyhrazuje určité množství paměti, zatímco deklarace nezahrnuje přidělení paměti.
- Programový prvek může být deklarován vícekrát. Definice naopak obsahuje jedinečnou specifikaci s názvem programového prvku, který může být rozlišován jakýmkoliv kódem nebo daty.
- Rozsah v deklaraci popisuje viditelnost proměnné, funkce, objektu, třídy, výčtu, atd. Naproti tomu v definici se rozsah týká délky trvání.
Definice Příklad
- Definice proměnné a prohlášení:
int r = 10;
- Definice funkce:
int add (int x, int y) {int a; a = x + y; návrat a; }
Prohlášení Příklad
- Prohlášení o proměnné:
extern int r;
- Prohlášení funkce:
int add (int p1, int p2);
Závěr
Proces deklarace se používá k tomu, aby byl programový prvek viditelný pro kompilátor a nevyžaduje přidělení paměti. Definice je naopak deklarace, která rezervuje úložiště, jednoduchým slovem kompilátor rezervuje paměťový prostor pro deklarovanou entitu.