Virtuális módszerek
Emlékezzünk, az első, hogy egy ilyen funkció sablonok
Sablonok kerülnek bevezetésre, hogy automatizálják a funkciók feldolgozásának heterogén adatok. Például egy rendezési algoritmust lehet használni bármilyen típusú tömbök. Ha túlterhelés funkció minden típusú használt határozza meg a működését. Sablon funkció határozza egyszer, de a meghatározás paraméterezett, t. E. A továbbított adatok típusát, mint a sablon paraméter. Sablonformátumot:
Így, egy család minta funkció két részből áll - a sablon fejléc: template<список параметров шаблона> Rendes meghatározó funkciója, amely ahelyett, hogy a visszatérési típus és / vagy típusa rögzített paraméterek nevét meghatározott típusú sablon fejléc.
// függvény sablont, ami az abszolút értéke bármilyen
sablon
A használt sablon automatikus generációs leírásai a funkciók a kihívás, hogy a fordító találja a programban. Például ha egy program hívás végezzük függvényében abs (-1,5), akkor a fordító generál kettős abszolút meghatározás funkció (double x).
Class sablonokat, valamint a támogató funkció sablonokat generikus programozási paradigma, t. E. Leprogramozni típusú paramétereket. Mechanizmus sablonok a C ++ engedélyezi az absztrakt típus paraméterként, hogy meghatározza az osztály. Miután a sablon osztály meg van határozva, hogy lehet használni, hogy azonosítsa a osztályokba. Ennek folyamatát a fordítóprogram határozza meg a konkrét osztályát minta osztály és érvek mintázatot alkotnak sablon példányosítás.
Definiálása egy sablont (generikus, általános) osztály a következő:
sablon <параметры шаблона>
T x, y; // koordinátapont
Point (T X = 0, T Y = 0): X (X), y (Y)<>
érvényteleníti Show () const;
pont
pont
A projekt, amely több fájl, egy osztály sablon meghatározás kivitelezése általában egy külön fájlba. De ahhoz, hogy egy adott példányosítunk objektumpéldányt sablon szükséges, hogy a sablon meghatározása volt a fordítási egység ebben az esetben. Ezért minden osztály sablon meghatározás kerül a header fájlt, akkor a fájl van kötve a kívánt fájlt include direktíva. Ez a fájl nem tartalmazza újra ifndef irányelvet.
T x, y; // koordinátapont
Néha meg kell határozni egy speciális változata a sablon egy adott típusú paraméterül (vagy az egyik paraméter).
Tekintsük az arány a T egy sablon bool kevesebb (T) const; // specializáció char * sablon <> osztály minta bool kevesebb (T) const; A letöltés folytatásához össze kell rakni egy képet:Kapcsolódó cikkek