Kezdőoldal » Számítástechnika » Programozás » A sablonok mire vannak mire...

A sablonok mire vannak mire találták ki őket? Egy hete próbálom megérteni a c++ nak a sablonok nyelvi részét de nem megy.

Figyelt kérdés
2012. dec. 10. 14:20
1 2
 11/15 anonim ***** válasza:

Röviden és tömören:


Egy sablon és egy vagy több típus egy típust hoz létre.

Például az STD-ben egy sablon a vector típus, ami egyébként egy bizonyos szabályoknak megfelelő rendezett halmaz tárolására használható. A halmaznak csak egyféle típusú eleme lehet, és ezt a sablonhoz megadott típussal tudod kiválasztani. Például a vector <int> Egész számokat tartalmazó vektor, a vector <string> pedig karakterláncokat. Bármilyen típust használhatsz vectorral. (Akár más vectorokat is, mert a sablonhoz megadott típus is lehet sablonnal készített típus).


Ha egy saját típust vagy függvényt készítesz, megteheted azt, hogy sablonokkal valósítod meg, ebben az esetben a fordítóprogram a sablon összes felhasználásánál elkészíti a típust úgy, hogy a megvalósításban az éppen kiválasztott típust használhatja. Ahhoz, hogy egyértelműen meghatározhass sablonon belüli kódot, ahhoz választhatsz egy álnevet a típusoknak.


Tehát, ha pl. egy osztályt deklarálsz, használhatsz hozzá sablonokat. Úgy, hogy meghatározod, milyen álnéven szerepeljenek a típusok. Ha pl. a tipus1 és a tipus2 álnevek használatával deklarálod a dict osztályt, és a programodban valahol egy dict<string, int> típusú változót készítesz, akkor létrejön egy új típus a sablonod alapján, ahol tipus1 helyett string, tipus2 helyett int típus jelenik meg.

2012. dec. 10. 20:10
Hasznos számodra ez a válasz?
 12/15 Srapnel ***** válasza:

"Fordítsuk le" magyarra:


"template <class T> T min(T a, T b)"


"Hé, te fordító! Ezentúl ismerni fogsz egy függvényt, amit min-nek hívunk. Igen ám! De a paraméterei (a, b) és visszatérési értékének típusát még nem mondom meg előre (template), majd csak ott, ahol használom, addig viszont T-vel jelölöm, a függvény definíciójában. Láthatod, hogy a T bármi lehet, de az összes paraméter ugyanez a T-nek megfelelő típusú, csak úgy, mint a visszatérési érték.

2012. dec. 11. 09:32
Hasznos számodra ez a válasz?
 13/15 iostream ***** válasza:
Tegyük hozzá, hogy ezek nem sablonfüggvények (amire utalna az írásod), hanem függvénysablonok. Tehát a template függvény nem egy létező függvény, csak egy minta, ami alapján tud függvényeket generálni a fordító. Ez ellentétes a Javás, Adás, C#-os hozzáállással.
2012. dec. 11. 10:06
Hasznos számodra ez a válasz?
 14/15 A kérdező kommentje:
Már sokkal jobban értem adtam zöld kezeket.
2012. dec. 11. 11:09
 15/15 Srapnel ***** válasza:

"Tegyük hozzá, hogy ezek nem sablonfüggvények (amire utalna az írásod), hanem függvénysablonok. Tehát a template függvény nem egy létező függvény, csak egy minta, ami alapján tud függvényeket generálni a fordító."


Igaz, de gondoltam, ebbe már nem megyek bele. A felhasználási helyen végül is ugyanarra valók.

2012. dec. 11. 13:46
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!