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// típus - a név típusát paraméterezhető

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 a (13,15);

pont * Pa = new Point(10.1,0.55);

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 osztály minta

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