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.
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:
- Alapértelmezett kivitelező
- Paraméterezett kivitelező
- 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.
- 7 fehér étel, amelyet nem kell kerülnie a táplálkozástól
- A csalánkiütés okai, tünetei; Kezelések Mustela USA
- Agygyulladás kutyáknál - tünetek, okok, diagnózis, kezelés, gyógyulás, kezelés, költség
- Minden a nagyböjtről - a húsvét előtti 40 napban Fedezze fel a félelmetes tevékenységeket és szórakoztató tényeket a CBC gyerekek számára
- Minden a gégerákról OncoLink