Kivitelezők és rombolók a C-ben++

A konstruktorok speciális osztályfüggvények, amelyek minden objektum inicializálását elvégzik. A fordító minden objektum létrehozásakor felhívja a Konstruktort. A kivitelezők inicializálják az értékeket az objektumtagoknak, miután a tárhelyet az objektumhoz rendelték.

studytonight

Míg a Destructor másrészt az osztályobjektum megsemmisítésére szolgál.

Először a Konstruktorokkal kezdjük, a következő a szintaxisa a konstruktor függvény definiálásának egy osztályban:

A kivitelező definiálásakor emlékeznie kell arra, hogy a kivitelező neve azonos lesz a az osztály neve, és a kivitelezőknek soha nem lesz visszatérési típusuk.

A konstruktorok definiálhatók vagy az osztálydefiníción belül, vagy az osztálydefiníción kívül, az osztálynév és a hatókör felbontása: operátor használatával.

A kivitelezők típusai a C-ben++

A kivitelezők három típusból állnak:

  1. Alapértelmezett kivitelező
  2. Paraméterezett kivitelező
  3. COnstructor másolása

Alapértelmezett kivitelezők

Az alapértelmezett konstruktor az a konstruktor, amely nem vesz fel argumentumot. Nincs paramétere.

Ebben az esetben, amint az objektum létrejön, meghívják a konstruktort, amely inicializálja az adattagokat.

Az alapértelmezett konstruktor annyira fontos az objektumtagok inicializálásához, hogy még ha nem is definiálunk egy konstruktort kifejezetten, a fordító implicit módon megadja az alapértelmezett konstruktort.

0 vagy bármilyen véletlenszerű érték

Ebben az esetben a fordító által biztosított alapértelmezett konstruktort hívják meg, amely inicializálja az objektum adattagjait az alapértelmezett értékre, ez 0 vagy bármely véletlen egész szám lesz ebben az esetben.

Paraméterezett kivitelezők

Ezek a konstruktorok paraméterrel. A Constructor használatával különböző értékeket adhat meg a különböző objektumok adattagjainak, a megfelelő értékeket argumentumként továbbítva.

A fenti esetben paraméterezett konstruktor használatával 3 objektumot inicializáltunk a felhasználó által definiált értékekkel. Bármely paraméterünk lehet egy konstruktorban.

Kivitelezők másolása

Ezek a Konstruktorok speciális típusa, amely objektumot vesz fel argumentumként, és az egyik objektum adattagjainak értékeit más objektumba másolja. A későbbiekben részletesen megvizsgáljuk a másolatkészítőket.

Konstruktor túlterhelése C-ben++

A többi tagfunkcióhoz hasonlóan a konstruktorok is túlterhelhetők. Valójában akkor, ha mind az alapértelmezett, mind a paraméterezett konstruktorok meg vannak határozva az osztályában, akkor túlterhelt konstruktorok vannak, egyik paraméter nélküli, másik paraméteres.

Bármely konstruktőre lehet egy osztályban, amely paraméter-listában különbözik.

A fenti esetben két különböző paraméterű konstruktort definiáltunk, ami túlterheli a konstruktorokat.

Még egy fontos dolog, ha bármilyen konstruktort kifejezetten definiálsz, akkor a fordító nem ad meg alapértelmezett konstruktort, és neked magadnak kell meghatároznod.

A fenti esetben, ha Student S-t írunk; ban ben fő(), fordítási idő hibához vezet, mert nem definiáltuk az alapértelmezett konstruktort, és a fordító nem fogja megadni az alapértelmezett konstruktort, mert más paraméterezett konstruktorokat definiáltunk.

Rombolók C-ben++

A Destructor egy speciális osztályfüggvény, amely elpusztítja az objektumot, amint az objektum hatóköre lejár. A fordító automatikusan meghívja a destruktort, amikor az objektum kilép a hatókörből.

A destructor szintaxisa megegyezik a konstruktoréval, a destructor nevéhez az osztály nevét kell használni, egy tilde

jel előtagként.

A rombolóknak soha nem lesznek érveik.

Példa a Konstruktor és a Destructor nevének megtekintésére

Alább van egy egyszerű A osztályunk konstruktorral és destruktorral. Létrehozzuk az osztály objektumát, és megnézzük, mikor hívják meg a konstruktort és mikor hívják meg a destruktort.

Constructor nevű Constructor nevű Destructor nevű Destructor hívott

Objektum létrehozásakor az adott osztály konstruktorát hívják meg. Az objektum hivatkozás megsemmisül, amikor a hatóköre véget ér, amely általában a záró göndör zárójel után van> annak a kódblokknak, amelyben létrehozták.

Az obj2 objektum megsemmisül, ha az if blokk véget ér, mert az if blokkon belül jött létre. Az obj1 objektum pedig megsemmisül, amikor a main () függvény véget ér.

Egyetlen definíció mind az alapértelmezett, mind a paraméterezett konstruktorhoz

Ebben a példában azt fogjuk használni alapértelmezett argumentum hogy a defualt és a paraméterezett konstruktor számára egyaránt legyen egy definíció.

Itt, ebben a programban, egyetlen Constructor definíció gondoskodik mindkét objektum inicializálásáról. Nincs szükségünk külön alapértelmezett és paraméterezett konstruktorokra.