Létrehozása egyszerű design
Lecke 23. A konstruktor és destruktor
Amikor objektumokat hoz létre az egyik leggyakrabban használt műveletek akkor elvégzi a program, akkor inicializálni az elemek az adatok objektumot. Ahogy az 22. lecke, az egyetlen módja, amelyen keresztül lehet hozzáférni a személyes adatok elemek használata egy osztály funkciókat. Ahhoz, hogy egyszerűsítse a folyamat inicializálása adatelemek osztály, C ++ egy speciális funkció az úgynevezett konstruktor, amely fut minden objektum létrehozásakor. Hasonlóképpen, a C ++ olyan funkciót nyújt úgynevezett destructor, amely akkor indul, amikor egy objektum megszűnik. Ez az osztály konstruktor és destruktor tárgyaljuk részletesebben. Végére ez a lecke, megtudhatja az alábbi alapfogalmakat:
A konstruktor egy osztály módszer, amely megkönnyíti a programot elindítani osztály adatelemek.
A kivitelező ugyanaz a neve, mint az osztálynak.
Constructor nincs visszatérési értéke.
Minden alkalommal, amikor a program létrehoz egy osztály változó, C ++ az osztály konstruktora, ha van egy tervező.
Sok tárgyak memóriát kiosztani az információ tárolására; ha töröl egy objektumot, C ++ destruktor fogja hívni egy speciális, amely kiadja ezt a memóriát, tisztítás után az objektumot.
Destructor ugyanaz a neve, mint az osztálynak, kivéve, hogy meg kell előznie a neve tilde (
Destructor nincs visszatérési értéke.
Feltételek konstruktor és destruktor nem megijeszteni. Ehelyett elképzelni egy designer függvényében, hogy segít felépíteni (tervezés) objektumot. Hasonlóképpen, a romboló egy olyan funkció, amely segít elpusztítani az objektumot. A destruktor akkor használatos, amikor egy objektum megszűnik, ha meg kell szabadítani a memóriát, hogy tartotta a tárgyat.
A konstruktor egy osztály módszer, hogy ugyanaz a neve, mint az osztálynak. Például ha egy osztály az úgynevezett munkavállalói, a tervező is lesz a neve a munkavállaló. Hasonlóképpen, egy osztály a nevét a tervező kutyák lesz a kutyák nevét. Ha a program határozza meg a kivitelező, C ++ automatikusan hívja minden alkalommal, amikor létrehoz egy objektumot. Következő CONSTRUC.CPP program létrehoz egy osztály nevű alkalmazottja. A program meghatározza a kivitelező nevű munkatársa hozzárendeli a kezdeti érték az objektum. Azonban a kivitelező nem ad vissza semmilyen értéket, annak ellenére, hogy ez nem nyilvánították semmisnek. Ehelyett egyszerűen nem adja meg a visszatérési típus:
A programban egyszerűen határozza meg a kivitelező ugyanúgy, mint bármely más módszer az osztály:
alkalmazotti :: alkalmazott (char * name, hosszú employee_id, úszó fizetés)
Mint látható, a kivitelező nem hívja a függvény egy értéket. Mert azt nem használják típus érvénytelen. Ebben az esetben a tervező használja a globális szereplő, és lehetővé teszi az osztály nevét neve előtt az egyes elemek, a tárgyalt lecke 23. Az alábbiakban CONSTRUC.CPP a program végrehajtását:
alkalmazotti :: alkalmazott (char * name, hosszú employee_id, úszó fizetés)
alkalmazotti munkás ( "Happy Jamsa", 101 10101,0);
Ha a programot kell létrehozni több objektum a munkavállaló, akkor inicializálni elemeit mindegyik segítségével a tervező, az alábbiak szerint:
alkalmazotti munkás ( "Happy Jamsa", 101 10101,0);
alkalmazotti manager ( "Jane Doe", 1022, 30000,0);
Az az elképzelés, a tervező
A konstruktor egy speciális funkciója, hogy a C ++ automatikusan hívja minden alkalommal, amikor létrehoz egy objektumot. A szokásos célja egy konstruktor inicializálni az elemek a adatobjektum. A kivitelező ugyanaz a neve, mint az osztálynak. Például egy osztály nevű fájlt tervező neve fájlt. Ön határozza meg a kivitelező a programot, valamint minden osztály módszer. Az egyetlen különbség az, hogy a kivitelező nem rendelkezik visszatérési értéke. Amikor egy objektum később paraméterek átadása a kivitelező, az alábbiak szerint:
class_name objektum (valuel, érték2, érték3)
A tervezők és az alapértelmezett beállításokat
Mint azt már tudja a 15. lecke, C ++ adhatja meg az alapértelmezett értékeket funkció paramétereit. Ha a felhasználó nem ad meg semmilyen paramétert, akkor a függvény az alapértelmezett értékeket. A tervező nem képez kivételt; A programot megadhat egy alapértelmezett értéket érte ugyanúgy, mint bármely más funkciót. Például a következő kivitelező munkavállaló egy alapértelmezett értéke egyenlő a fizetést 10000,0, ha a program nem jelzi a fizetési amikor egy objektum jön létre. A program azonban meg kell határozni a munkavállaló nevét és számát:
alkalmazotti :: alkalmazott (char * name, hosszú employee_id, úszó fizetés = 10000,00)
Mint azt már tudja óráról 13, C ++ lehetővé teszi a programot, hogy túlterheli a függvénydefiníciókat jelzésére alternatív funkciók más típusú paramétereket. C ++ segítségével túlterhelés és a tervezők. Következő CONSOVER.CPP programot túlterheli a munkavállaló kivitelező. Az első kivitelező előírja, hogy a program meghatározza a munkavállaló nevét, az alkalmazottak számát és fizetését. A második kivitelező kéri a felhasználót, hogy adja meg a szükséges fizetést, ha a program nem jelzi azt:
alkalmazotti :: alkalmazott (char * name, hosszú employee_id)
Belül az osztály definíciója kell mondani prototípusok mind a tervezők, az alábbiak szerint:
Az alábbiakban CONSOVER.CPP a program végrehajtásáról:
alkalmazotti :: alkalmazott (char * name, hosszú employee_id, úszó fizetés)
alkalmazotti :: alkalmazott (char * name, hosszú employee_id)
Ha lefordítani és futtatni ezt a programot, a képernyő meg kell adnia a fizetés Jane Doe. Ha belép egy fizetés, a program megjeleníti információkat a két alkalmazottal.