Szabályai tervezők
Valójában a kivitelező érv átviteli szintaxist paraméterekkel egy rövidített jelölése a következő kifejezés:
Dot Dot A = ( 'A' 3. 4).
Ugyanakkor szinte mindig használ a rövid formában a szintaxis adott a példa.
Ezzel szemben a kivitelező, destruktor lehet paramétereket. Egyértelmű, hogy ez miért történik: nincs szükség át érvek a törölt objektum.
Itt vannak a szabályok, hogy létezik a tervezők:
Osztály kivitelező nevezzük, amikor egy objektum jön létre a kategóriájában;
Tervező általában inicializálja osztály adattag és memóriát a dinamikus tag;
Constructor ugyanaz a neve, mint az osztály, amelynek az állampolgára; A tervező nem határozza meg a visszatérési típus; A tervező nem ad vissza értéket; kivitelező nem örökölhető;
osztály is több túlterhelt konstruktőrök;
kivitelező nem nyilvánítható a módosító const. ingadozó. statikus vagy virtuális;
ha az osztály nincs definiálva konstruktor, a fordító létrehoz egy alapértelmezett konstruktor. nincsenek paraméterei.
Szabályai destruktorok
Mert destruktorai a következő szabályokat: a destruktor nevezzük, amikor egy tárgy hagyni
destructor általában a feladat megszabadítani a memória által elfoglalt tárgy;
destructor ugyanaz a neve, mint az osztály, amelyhez tartozik, az előző jel
; destructor lehet paramétereket; destructor nem ad vissza értéket; destruktor nem örökölhető; Ez az osztály nem lehet több, mint egy destruktor;
destructor nem nyilvánítható a módosító const. illékony vagy statikus;
ha az osztály nincs definiálva dekonstruktorra a fordító létrehoz egy alapértelmezett destruktor.
Hangsúlyozzuk még egyszer: konstruktor és destruktor C ++ nevezzük automatikusan. a garantált
ingázik a jogot, hogy hozzon létre és törölhet tárgyak osztálya.
List inicializálni elemek
Jellemzően osztály adattag inicializálja a kivitelező szervezet, de van egy másik módja annak, hogy inicializálja - egy listát inicializáló elemekkel. Inicializálás lista elemeinek kettősponttal elválasztva a fejléc meghatározó funkció adatokat tartalmaznak és tagjai és a bázis osztályok, vesszővel elválasztva. Minden elem zárójelben közvetlenül mögötte jelzi egy vagy több paraméter használható betöltés közben. A szintaxis az inicializáló lista a következő:
ConstrName (Pari. PAR2). Mem1 (Pari). Mem2 (PAR2). ... <…>
A következő példában, osztály inicializálás a inicializálási lista elemeinek.
// konstruktor egy listát inicializálás
Dot (char neve). (Name). X (0). y (0) <>
Inicializálása közben a test egy kivitelező vagy inicializálása a listán - ez a programozók íze inicializáló lista az egyetlen módja inicializálása dannyhkonstant és linkek. Ha egy tag egy osztály egy objektum, a tervező által előírt beállítási értékeit egy vagy több paraméter, az egyetlen lehetséges út is egy inicializáló inicializáló lista.
Alapértelmezett konstruktor
C ++ határoz két speciális konstruktőrök: az alapértelmezett konstruktor, amit a fent említett, és annak egy példányát kivitelező. Az alapértelmezett konstruktor nincsenek paraméterei (vagy az összes paramétert kell alapértelmezett értékek) és az úgynevezett amikor egy objektum jön létre, amelyek nem szerepelnek az érveket. Félreértések elkerülése végett a kivitelező hívást. Az alábbi példában a két alapértelmezett konstruktorok kétértelmű:
// alapértelmezett konstruktor
// Constructor egy opcionális paraméter
// lehet használni, mint az alapértelmezett konstruktor
// A kivitelező T :: T (int)
// nem helyes; kétértelműséget hívás T :: T () T vagy T :: (int = 0)
konstruktorok másolata
A másolat szerkesztő létrehoz egy objektumot az osztály, így az adatok másolása egy létező objektum ebben az osztályban. Ebben a tekintetben, azt, mint az egyedüli paraméter állandó hivatkozás osztály objektum (const T ) Vagy egy hivatkozás egy objektum osztály (T ). Az első előnyös, mivel az utóbbi nem teszi lehetővé a másolás const tárgyakat.
Ha egy osztály nincs definiálva konstruktor, a fordító megpróbálja létrehozni a saját alapértelmezett konstruktort, és ha szükséges, a saját példányát kivitelező. Azok a fordító által generált tervezők tekintik nyilvános tagfüggvény. Hangsúlyozzuk, hogy a fordító generálja ezeket konstruktőrök ha az osztály nem határozza meg más tervezők.
Itt egy példa a másolás kivitelező: