Diferència entre constructor i destructor

Autora: Laura McKinney
Data De La Creació: 1 Abril 2021
Data D’Actualització: 10 Ser Possible 2024
Anonim
Diferència entre constructor i destructor - Tecnologia
Diferència entre constructor i destructor - Tecnologia

Content


Constructor i destructor són les funcions de membre amb el mateix nom que la seva classe. El tipus anterior constructor ajuda a inicialitzar un objecte. Per contra, a destructor és diferent del constructor que elimina el constructor creat quan no serveix de res.

De vegades és necessari inicialitzar alguna part d’un objecte abans que es pugui utilitzar. Per exemple, estem operant a la pila, abans de realitzar cap acció, la part superior de la pila sempre s'ha de posar a zero. Aquesta característica d'inicialització automàtica es realitza mitjançant "Constructor". Com, si un objecte necessita executar algun codi abans que es destrueixi. Per exemple, si un objecte necessita tancar un fitxer que havia obert abans de la seva destrucció. Es pot realitzar amb l'ajuda de "Destructor".

Repassem algunes de les diferències fonamentals entre constructor i destructor amb l'ajut d'un gràfic de comparació


  1. Gràfic de comparació
  2. Definició
  3. Diferències claus
  4. Conclusió

Gràfic de comparació:

Bases per a la comparacióConstructorDestructor
Propòsit

Assigna la memòria a un objecte.Designa la memòria d’un objecte.
Declaració nom de classe (arguments si n'hi ha) {};~ nom de classe (sense arguments) {};
Arguments El constructor accepta l'argument Destructor no accepta cap argument.
TrucadesEl constructor s'anomena automàticament mentre es crea l'objecte.S'anomena destructor automàticament, ja que el bloc es queda fora o el programa finalitza.
TreballConstructor permet que un objecte inicialitzi part del seu valor abans que s’utilitzi.Destructor permet a un objecte executar algun codi en el moment de la seva destrucció.
Ordre d’execució

S'anomena constructor en ordre successiu.
S'anomena destructor en ordre invers del constructor.
En números Hi pot haver múltiples constructors en una classe.Sempre hi ha un únic destructor a la classe.
Copia el constructor Copia el constructor permet que un constructor declari i inicialitzi un objecte des d'un altre objecte.No hi ha aquest concepte.
Sobre carregant Els constructors es poden sobrecarregar.No es pot sobrecarregar el destructor.


Definició de Constructor:

A constructor és bàsicament una funció membre de la classe, que inicialitza l'objecte i li assigna memòria. Els constructors es poden identificar fàcilment ja que es declaren i es defineixen amb el mateix nom que el de la classe. Un constructor no té cap tipus de retorn; així doncs, no retornen res, ni tan sols "nuls". Un constructor sempre es defineix a la secció pública d'una classe.

Hi pot haver múltiples constructors en una classe; es poden distingir en funció del nombre i del tipus d’arguments aprovats. Si hi ha diversos constructors en una classe; Cal definir el constructor implícit (el que no fa res); no fa altra cosa que, satisfà el compilador.

Els constructors també es poden definir amb els arguments per defecte. Mentre que, també inicialitzen l'objecte "dinàmicament". Els constructors no es poden heretar ni poden ser virtuals, però es poden sobrecarregar. No se'ls pot remetre la seva adreça.

Tipus de constructors

Bàsicament hi ha tres tipus de constructors: els constructors predeterminats, els parametrisats i els de còpia.

  • Constructor predeterminat: És un constructor on no es dóna cap argument al constructor. El constructor per defecte no té cap paràmetre, però els valors del constructor predeterminat es poden passar per defecte (dinàmicament).
  • Constructor paràmetre: Aquest tipus de constructors prenen els arguments; podem passar diferents valors als membres de dades com a arguments.
  • Copia el constructor: El constructor de còpia és diferent dels altres tipus de constructors perquè accepta l'adreça de l'altre objecte com a argument.

Implementació del constructor:

classe Const {int a, b; public: Const () // constructor sense paràmetre {a = 0; b = 0; } Const (int c, int d) {// constructor amb el paràmetre a = c; c = d; }}; int principal () {Const C1; C2 (10,20); // aquesta declaració invoca el constructor}

Quan es crea C1, s'executa un constructor sense paràmetre, ja que C1 no passa cap paràmetre. Mentre que, quan es crea C2, s'executa un constructor amb paràmetre, ja que passa dos nombres enters al constructor.

Definició de Destructor:

A Destructor és també una funció membre d’una classe, que designa la memòria assignada a un objecte. Es defineix amb el mateix nom que el d’una classe, precedit per a tilde (~) símbol. Els destructors sempre s’anomenen en l’ordre invers dels constructors.

Sempre hi ha un únic destructor en una classe, ja que no accepta cap argument. Els objectes locals es destrueixen tan bon punt el control de l’execució surt del bloc; d’altra banda, els objectes globals es destrueixen quan s’acaba tot el programa. Un compilador l’anomena implícitament un destructor. Si les classes s’hereten i una classe deriva d’una classe progenitora, i tant la classe fill com la classe progenitora tenen destructors; llavors, es diu primer el destructor de la classe derivada, seguit del destructor de la classe progenitora.

Implementació del Destructor:

classe Const {int a, b; public: Const (int c, int d) // constructor amb paràmetre. {a = c; c = d; cout << "el valor de a i b són" <<>

Quan es crea un objecte C1, s’invoca un constructor amb dos paràmetres de tipus enter i s’inicialitza el membre “a, b” i s’edita el valor de “a, b”. Després d'aquest destructor s'invoca i es destrueix "l'objecte C1".

Necessitat del destructor

La creació del constructor consumeix una gran quantitat d’espai de memòria, ja que finalment assigna memòria als objectes. Aquesta memòria assignada ha de ser assignada abans de destruir els objectes per alliberar els recursos per a altres tasques. Els destructors són extremadament útils per al propòsit previst, que destrueix eficaçment objectes i realitza tasques de neteja per alliberar la memòria.

  1. El propòsit principal d’un constructor és assignar memòria als objectes quan es creen. En contraposició, l’objectiu principal d’un destructor és desallotjar la memòria de l’objecte quan aquest es destrueix.
  2. Al constructor se li permet acceptar els arguments ja que es poden utilitzar els arguments per inicialitzar les dades dels membres de la classe. D'altra banda, un destructor no accepta cap argument, ja que la seva única obra és desallotjar la memòria de l'objecte.
  3. S'anomena constructor quan es crea un objecte. En canvi, s’anomena destructor quan s’acaba un programa o el programa surt del bloc en què es crea un objecte.
  4. Un constructor s'utilitza generalment per inicialitzar les dades dels membres de la classe, mentre que un destructor s'utilitza per deixar que l'objecte realitzi alguna acció abans que es destrueixi.
  5. Els constructors s’executen en l’ordre successiu, cosa que significa que si hi ha una classe derivada que hereta la classe base i es crea l’objecte de la classe derivada, primer anomenarà el constructor de la classe base i després el constructor de la classe derivada. Per contra, el destructor de la classe derivada es diu primer i, després, la classe base significa que s'executa un destructor en ordre invers del constructor.
  6. A la classe, poden haver-hi diversos constructors que s’identifiquen amb els arguments de nombre passats mentre que només pot tenir un destructor.
  7. Hi ha un concepte de constructor de còpies que permet inicialitzar un objecte d'un altre objecte mentre que el destructor no té aquest concepte.
  8. Els constructors es poden sobrecarregar per realitzar diferents accions amb el nom del mateix constructor. Per contra, els destructors no es poden sobrecarregar.

Conclusió:

A més de la similitud, és que el constructor i el destructor són la funció de membre especial d'una classe i posseeixen el mateix nom, la diferència essencial entre ambdós és que es diu "constructor" en el moment d'assignació de memòria i es diu "destructor" a la deslocalització de memòria del temps d'objectes Tant el constructor com el destructor són anomenats implícitament pel compilador, tot i que no es defineixen a la classe.