C ++ osztályú konstruktorok

C Class Constructors



A konstruktorok olyanok, mint a függvények. Ezek az osztály értékeinek és objektumainak inicializálására szolgálnak. Ezeket a konstruktorokat akkor indítják el, amikor egy osztály objektuma létrejön. A konstruktor közvetlenül nem ad vissza értéket. A konstruktor értékének meghatározásához külön függvényt kell leírnunk, mivel a konstruktornak nincs visszatérési típusa. A konstruktor különböző módon különbözik az egyszerű funkciótól. Konstruktor jön létre az objektum létrehozásakor. Az osztály nyilvános szegmensében van meghatározva.

Ebben a cikkben példákkal fogunk foglalkozni az összes ilyen típusú konstruktorral.







1. példa

Ez egy alapértelmezett konstruktor illusztrációja. Mint tudjuk, hogy a konstruktorok alapértelmezés szerint automatikusan jönnek létre, amikor egy osztály objektumát hozzuk létre. Ezt implicit teremtésnek hívják. A konstruktorok azonos nevűek, mint az osztály neve. Tekintsünk egy fájlt, amely tartalmazza a konstruktor c ++ kódját, mivel tudjuk, hogy az osztálynak két lehetősége van: privát és nyilvános. A privát rész az adatváltozókat tartalmazza, míg a nyilvános rész az objektumok által lekért funkciókhoz tartozik. Tehát a konstruktor is definiálva van a nyilvános részben.



Egész szám()

{

x=ötven;

és=húsz;

};

Ebben a konstruktorban értékek vannak hozzárendelve a változókhoz. Ha kimenetként szeretnénk lekérni az értékeket, ki kell nyomtatnunk a főprogramban.







A konstruktor meghatározása után az osztály bezárul. A főprogramba való belépéskor kinyomtatjuk az értékeket egy objektum használatával. Az objektum mindig hozzáfér a konstruktorokhoz, mivel ezek az osztály részei. Az objektum létrehozása ilyen egyszerű. Ez úgy történik, hogy bevezeti az osztály nevével. Ebben a példában ez egy egész szám. Az érték a pont módszerrel lesz lekérve. azaz a.x.

Láthatjuk a forráskód kimenetét az Ubuntu termináljáról. A kimenet megszerzésére alkalmazott módszer meglehetősen egyszerű. Először a kódot lefordítják, majd végrehajtják. A fordítási folyamathoz a G ++ fordítót használjuk. Csakúgy, mint a C esetében, GCC -t használunk.



$ G++ -vagy filec filec.c

./filec

-O a kimenet fájlba való mentésére szolgál.

2. példa

Ebben az illusztrációban a paraméterezett konstruktorokat ismertetjük. Az előző példától eltérően az érveket a főprogram konstruktőreinek is átadhatjuk. Az objektum létrehozásakor ezeket az értékeket automatikusan átadja a konstruktorban jelen lévő változóknak, hogy megkapja az értéket. A paraméterezett konstruktorok néhány felhasználási módja.

  • Arra használják, hogy inicializáláskor különböző változókat inicializáljanak különböző értékekkel a konstruktorokon belül.
  • A konstruktor túlterhelésében használják. Ezt a cikk későbbi részében határozzák meg.

Most nézzük meg az általam leírt illusztrációt e fogalom kidolgozásához. Az osztály neve egész szám, tehát határozottan a konstruktor neve is ugyanaz lesz. A konstruktor paramétereiben két egész típusú érték szerepel. Ezeket inicializálják, hogy elfogadják a főprogramtól funkcióhívásként elküldött értékeket.

Egész szám( intx,intés)

{

NAK NEK=x;

B=és;

};

Az előző példában a konstruktoron belüli változók értékeket kaptak. Míg ebben a konstruktorban a változókat hozzárendelik az értékkel rendelkező változókhoz.

Ha megjelenítést akarunk végezni, akkor meg kell határoznunk egy függvényt, amely visszaadja az értéket, mivel nem lehetséges az inicializált változó elérése közvetlenül a konstruktorból.

intgetX()

{

Visszatérésnak nek;

};

Most látni fogjuk a program fő részét. Itt, amikor az objektum létrejön, láthatja a paraméter szakasz értékeit.

Egész szám v(70,55); {beleértett}

egész szám v=egész szám(10,tizenöt); {kifejezett}

Az eredmény megjelenítéséhez pedig meghívjuk az osztályon belül az objektum használatával létrehozott függvényeket. azaz v.getx ().

A rekordok lekérésének módja megegyezik a korábban bemutatottakkal.

3. példa

Ez a példa egy osztály konstruktorának másolásával foglalkozik. Egy másolt konstruktor segítségével inicializálható az objektum egy másik hasonló osztályú objektummal, amelyhez tartozik. Ez a konstruktor másolja az egyik objektumban lévő adatokat a másikba. Ennek a konstruktornak a paraméterei tartalmazzák az osztály egy objektumának címét. Tekintsük a megadott példákat, amelyekben két azonos adattípusú változót vezettünk be, hogy ezek az osztályon belül bármely függvényhez hozzáférjenek. A konstruktor a változón keresztül fogadja az értékeket. Ugyanakkor a másolt konstruktor csak az objektumot kapja meg. És ennek az objektumnak a segítségével az értékek lekérésre kerülnek.

Fal(fal&obj)

{

Hossz=obj.hossz;

Magasság=obj.magasság;

}

Ki kell számolnunk a területet, ezért ennek a számításnak a függvényét itt határozzuk meg. Ez visszaadja az értéket a fő funkciónak, amikor meghívják. Most megfigyeljük a kód fő programját

A másolt konstruktor függvényhívása ilyen lesz.

Falfal2=fal1;

Az objektum meghívja a másolt konstruktort, és az adatok az első objektumon keresztül másolódnak át rajta. Ezenkívül meghívjuk a függvényt, hogy kiszámítsa a területet mindkét objektumon keresztül.

A kimeneten látható, hogy mindkét konstruktor eredménye azonos. Ez azt jelenti, hogy az objektum sikeresen lemásolta a teljes adatot.

4. példa

Ez a konstruktor túlterhelésének illusztrációja. Ez akkor fordul elő, ha több funkciót kell használnunk az osztályon belül. A konstruktor túlterhelése a paraméterezett konstruktorok utasításait követi. Az osztály összes konstruktorának hasonló neve van, mint az osztálynak. De mindegyik konstruktorhoz különböző paraméterek vannak hozzárendelve. Minden konstruktort az argumentum szerint hívnak meg, amikor létrehozjuk az objektumot.

Tekintsük az adott példát, amelyben három konstruktőrt használtunk. Az egyik vita nélkül. A második egyetlen érvvel, míg a harmadik két érvvel rendelkezik. Ez az illusztráció hasonló az előzőhöz. Miközben a területet az osztályon belül leírt külön függvényben számítjuk.

// Konstruktor két érvvel

alak(intx,intés)

{

nak nek=x;

b=és;

};

Most a főprogram felé haladva láthatjuk, hogy amikor elindítjuk az osztályobjektumot, az argumentum nélküli konstruktor alapértelmezés szerint meghívásra kerül. Most más, különböző objektumokkal rendelkező konstruktorokat kell hívnunk, amelyeknek különböző érvei vannak.

Alakzat s;

S2 alak(8);

Alakja s3(4,2);

A függvény, amelyen keresztül megjeleníthetjük az értéket, ugyanazon a létrehozott objektumon keresztül hívódik meg.

A kimenet megtekintéséhez ugyanazt a parancsterminális módszert fogjuk használni a fájlban található kód összeállításával és végrehajtásával.

A kimenetből láthatjuk, hogy a válasz minden konstruktor esetében ugyanaz.

Következtetés

Ebben az oktatóanyagban láttuk a konstruktorok alapjait és funkcióit, beleértve a túlterhelés módját. A konstruktorokat a változók inicializálására használják az értékekkel.