Definitionen er automatisk en erklæring i det meste af scenariet. Lad os nu forstå forskellen mellem definition og deklaration med det detaljerede sammenligningsdiagram.
Sammenligningstabel
Grundlag for sammenligning | Definition | Erklæring |
---|---|---|
Grundlæggende | Bestemmer værdien gemt i variabel, funktion eller klasse. | Angiver navn og type af variabel, funktion, klasse osv. |
Hukommelsesallokering | Opstår | Finder ikke sted. |
Gentagelse | Erklæringer kan ikke defineres igen, hvis den allerede er defineret. | Redeklaration kan nemt lade sig gøre. |
Anvendelsesområde | Varigheden er bestemt | Synlighed er angivet |
Definition af definition
Definition identificerer den kode eller data der er knyttet til navnet på variablen, funktionen, klassen osv. Definitionen kræves nødvendigvis af kompilatoren for at allokere lagringspladsen for den deklarerede enhed. Når en variabel er defineret, indeholder den en mængde hukommelse, der består af flere bytes for denne variabel. En funktionsdefinition producerer kode for funktionen. Vi kan definere et programelement kun én gang i et program, fordi definitionen er en unik specifikation af et programelement. Forholdet mellem deklaration og definition kan være en til mange .
I nogle situationer kan et programelement ikke defineres, men erklæres, for eksempel når en funktion aldrig påberåbes eller adressen aldrig bruges, selvom den er erklæret. Et andet eksempel er det, hvor klassedepositionen ikke bruges, mens den skal erklæres.
Definition af erklæring
Erklæring bruges til at angive navnene på programmet, såsom navnet på en variabel, funktion, navneområde, klasser osv. Intet navn kan bruges i et program uden dets erklæring. Programelementerne kan deklareres flere gange, i modsætning til definition. Flere erklæringer kan kun opnås, når de forskellige erklæringer laves ved hjælp af det samme format. Erklæring er et middel til at give synligheden til programelementet i perspektiv af kompilatorer.
Erklæringen tjener formålet med definitionen, men kun i visse tilfælde er betingelsen ikke underforstået, som er angivet nedenfor.
- Når det statiske dataelement er erklæret inde i en klassedeklaration, er det i så fald ikke en erklæring. Fordi det kun genererer en kopi for alle objekter i klassen, og statiske data er medlemmerne af objekter af en givet klassetype.
- Hvis en erklæring er typedef erklæring.
- En variabel erklæres uden initialiserings- eller funktionsorgan, men indeholder eksterne specifikationer. Det indikerer, at definitionen kunne være for den anden funktion og giver navnet eksternt link.
- Klassenavnet erklæring uden at indeholde definition som klasse T;
Normalt finder erklæringen sted. Omfanget bestemmer synligheden af det angivne navn og den definerede objektlængde.
Nøgleforskelle mellem definition og erklæring
- Definitionen af et programelement bestemmer værdien der er knyttet til det pågældende element. På den anden side specificerer erklæringen af et programelement dets navn og type til kompilatoren.
- Definitionen af programelementet forbeholder sig en vis mængde hukommelse, mens deklarationen ikke indebærer hukommelseallokering.
- Et programelement kan deklareres flere gange. Omvendt indeholder definitionen en unik specifikation med navnet på programelementet, som kunne skelnes ved en hvilken som helst kode eller data.
- Omfanget i deklarationen beskriver synligheden af variablen, funktionen, objektet, klassen, opgørelsen mv. I modsætning hertil vedrører definitionen varigheden.
Definition Eksempel
- Variabel definition samt erklæringen:
int r = 10;
- Funktionsdefinition:
int add (int x, int y) {int a; a = x + y; returnere a; }
Erklæring Eksempel
- Variabel angivelse:
extern int r;
- Funktionserklæring:
int add (int p1, int p2);
Konklusion
Deklarationsprocessen bruges til at gøre programelementet synligt for kompilatoren, og det kræver ikke at allokere hukommelsen. Omvendt definition er en erklæring, der lagrer opbevaring, i simple ord forbeholder kompilatoren hukommelsespladsen til den deklarerede enhed.