Skillnaden mellan konstruktör och destruktor

Författare: Laura McKinney
Skapelsedatum: 1 April 2021
Uppdatera Datum: 13 Maj 2024
Anonim
Skillnaden mellan konstruktör och destruktor - Teknologi
Skillnaden mellan konstruktör och destruktor - Teknologi

Innehåll


Konstruktör och destruktor är medlemsfunktionerna med samma namn som sin klass. Den förra typen konstruktör hjälper till att initialisera ett objekt. Omvänt, a destructor skiljer sig från konstruktören som tar bort den skapade konstruktören när den inte är till någon nytta.

Ibland krävs det att initialisera en del av ett objekt innan det kan användas. Till exempel arbetar vi på bunten, innan vi utför någon åtgärd måste toppen av bunten alltid ställas in på noll. Denna funktion av automatisk initialisering utförs via 'Constructor'. Som om ett objekt behöver köra någon kod innan den förstörs. Till exempel, om ett objekt måste stänga en fil som det hade öppnat, innan den förstörs. Det kan utföras med hjälp av 'Destructor'.

Låt oss se över de grundläggande skillnaderna mellan konstruktör och destruktor med hjälp av ett jämförelsediagram


  1. Jämförelsediagram
  2. Definition
  3. Viktiga skillnader
  4. Slutsats

Jämförelsediagram:

Grund för jämförelseKonstruktördestructor
Ändamål

Den fördelar minnet till ett objekt.Det fördelar ett objekts minne.
Deklaration klassnamn (eventuella argument) {};~ klassnamn (inga argument) {};
Argument Konstruktör accepterar argument Destructor accepterar inget argument.
KallelseConstructor anropas automatiskt medan objektet skapas.Destructor anropas automatiskt när blocket avslutas eller programmet avslutas.
ArbetssättConstructor tillåter ett objekt att initialisera en del av dess värde innan, det används.Destructor tillåter ett objekt att utföra någon kod vid dess förstörelse.
Förordning

Konstruktören kallas i successiv ordning.
Destruktor kallas i omvänd ordning av konstruktören.
I siffror Det kan finnas flera konstruktörer i en klass.Det finns alltid en enda förstörare i klassen.
Kopiera konstruktör Kopieringskonstruktör tillåter en konstruktör att deklarera och initiera ett objekt från ett annat objekt.Inget sådant koncept.
Överbelastning Konstruktörer kan överbelastas.Destruktorn kan inte överbelastas.


Definition av konstruktör:

EN konstruktör är i princip en medlemsfunktion i klassen, som initialiserar objektet och allokerar minne till det. Konstruktörer kan lätt identifieras eftersom de deklareras och definieras med samma namn som klassens. En konstruktör har ingen returtyp; så de returnerar ingenting, inte ens 'ogiltiga'. En konstruktör definieras alltid i den offentliga delen av en klass.

Det kan finnas flera konstruktörer i en klass; de kan särskiljas baserat på antalet och typen av överförda argument. Om det finns flera konstruktörer i en klass; implicit konstruktör (ingenting-konstruktör) måste definieras tillsammans med dem; det gör ingenting annat än, tillfredsställer kompilatorn.

Konstruktörer kan också definieras med standardargumenten. Medan de initialiserar också objektet "dynamiskt". Konstruktörer kan varken ärva, eller det kan vara virtuella men de kan vara överbelastade. De kan inte hänvisas till deras adress.

Typer av konstruktörer

Det finns i princip tre typer av konstruktörer - standard, parametrerade och kopia konstruktörer.

  • Standardkonstruktör: Det är en konstruktör där ingen argument ges till konstruktören. Standardkonstruktören har ingen parameter, men värdena till standardkonstruktören kan skickas som standard (dynamiskt).
  • Parameteriserad konstruktör: Denna typ av konstruktör tar argumenten; vi kan överföra olika värden till dataledamöterna som argument.
  • Kopiera konstruktör: Copy constructor skiljer sig från andra typer av konstruktörer eftersom den accepterar adressen till det andra objektet som ett argument.

Implementering av konstruktör:

klass Const {int a, b; public: Const () // konstruktör utan parameter {a = 0; b = 0; } Const (int c, int d) {// konstruktör med parameter a = c; c = d; }}; int main () {Const C1; C2 (10,20); // detta uttalande åberopar konstruktör}

När C1 skapas körs en konstruktör utan parameter, eftersom C1 inte passerar någon parameter. Medan C2 skapas kommer en konstruktör med parameter att köras, eftersom den överför två heltal till konstruktorn.

Definition av Destructor:

EN destructor är också en medlemsfunktion för en klass, som omfördelar minnet som är allokerat till ett objekt. Det definieras med samma namn som för en klass, föregående av a tilde (~) symbol. Destruktorer kallas alltid i omvänd ordning för konstruktörerna.

Det finns alltid en enda förstörare i en klass, eftersom den inte accepterar några argument. Lokala föremål förstörs så snart kontrollen av utförandet låter kvarteret; å andra sidan förstörs globala objekt när hela programmet avslutas. En förstörare kallas implicit av en kompilator. Om klasserna ärvs, och en klass härrör från en förälderklass, och både barnklassen och en förälderklass har förstörare; sedan kallas förstöraren av den härledda klassen först, följt av förstöraren av moderklassen.

Implementering av Destructor:

klass Const {int a, b; public: Const (int c, int d) // konstruktör med parameter. {a = c; c = d; cout << "värdet på a och b är" <<>

När C1-objekt skapas, anropas en konstruktör med två parametrar av heltalstyp och medlemmet "a, b" initialiseras och värdet på "a, b" redigeras. Efter att destruktorn åberopas och s "objektet C1 bli förstört".

Behov av Destructor

Skapandet av konstruktören förbrukar en viss mängd minnesutrymme, eftersom den till slut tilldelar minnet till objekten. Detta tilldelade minne måste delas om innan objektet förstörs för att frigöra resurserna för andra uppgifter. Destruktorer är oerhört användbara för det avsedda syftet, vilket effektivt förstör föremål och utför saneringsuppgifter för att släppa minnet.

  1. Det huvudsakliga syftet med en konstruktör är att allokera minne till objekten när de skapas. I motsats till detta är huvudsyftet med en förstörare att omlokalisera minnet av objektet när det förstörs.
  2. En konstruktör får acceptera argumenten eftersom argumenten kan användas för att initialisera klassmedlemmarnas medlemmar. Å andra sidan accepterar en förstörare inga argument eftersom dess enda arbete är att omlokalisera objektets minne.
  3. En konstruktör kallas när ett objekt skapas. Däremot kallas en förstörare när ett program avslutas eller programmet lämnar blocket i vilket ett objekt skapas.
  4. En konstruktör används vanligtvis för att initialisera datamedlemmarna i klassen, medan en destruktor används för att låta objektet utföra några åtgärder innan det förstörs.
  5. Konstruktörer utförs i successiv ordning, vilket betyder att om det finns en härledd klass som ärver basklassen och objektet för den härledda klassen skapas kommer det att anropa konstruktören för basklassen först och sedan konstruktören för den härledda klassen. Omvänt kallas förstöraren av den härledda klassen först och sedan basklassen betyder det att en destruktor körs i omvänd ordning av konstruktören.
  6. I klassen kan det finnas flera konstruktörer som identifieras av antalet argumenter som skickas medan det bara kan ha en förstörare.
  7. Det finns ett begrepp kopieringskonstruktör som gör att ett objekt kan initialiseras från ett annat objekt medan förstöraren inte har något sådant koncept.
  8. Konstruktörer kan vara överbelastade för att utföra olika åtgärder under samma konstruktörs namn. Tvärtom, destruktorer kan inte överbelastas.

Slutsats:

Förutom likheten, att konstruktör och destruktor är en klassens speciella medlemsfunktion och har samma namn, är den väsentliga skillnaden mellan dem båda, "konstruktör" kallas vid tidpunkten för minnesallokering och "destruktor" kallas vid tid för objektets minnesfördelning. Både konstruktör och destruktor kallas implicit av kompilatorn även om de inte är definierade i klassen.