Forum » Programiranje » <> operator v C++
<> operator v C++
zorangutan ::
Živjo,
mi lahko kdo prosim pomaga, kaj pomeni večji-manjši oklepaj pri definicijah classov,
npr:
nato pa definicija ClassY
ali pa:
Kaj točno pomeni oklepaj
Hvala za pomoč!
mi lahko kdo prosim pomaga, kaj pomeni večji-manjši oklepaj pri definicijah classov,
npr:
typedef DataStructures::Spr1<VELIKOST, ClassX> ClassY;
nato pa definicija ClassY
ClassY spremenljivkaY;
ali pa:
DataStructures::Spr1 <VELIKOST, ClassX> ClassY;
Kaj točno pomeni oklepaj
<>v C++ ?
Hvala za pomoč!
mallard ::
Dva oglata oklepaja nista operator, ampak označujeta seznam parametrov za neko šablono (template). Razred Spr1 tudi ni pravi razred, ampak je šablona razreda. Nekje je deklariran kot (domnevam, glede na primer, ki si ga dal):
Šablone se instanciirajo (po njih prevajalnik generira kodo), ko jih prvič uporabiš v neki deklaraciji, pri tem pa jim moraš podati parametre. Šablona, definirana zgoraj, vzame dva parametra. Prvi je konstanta tipa size_t (ali katerega drugega tipa, ki se lahko implicitno pretvori v size_t), drugi pa ime nekega tipa. Torej:
Možno je tudi naredit šablono za funkcijo:
V primeru funkcijske šablone ni vedno treba podat parametrov za šablono. V zgornjem primeru prevajalnik sam deducira tip (T = int) parametra. Precej funkcij v standardni knjižnici je v bistvu šablon (npr. tiste v headerju algorithm), ravno tako razredi vector, list, string, itd...
Vzemi si kakšno knjigo, šablone so lahko precej zoprne za zakapirat :)
namespace DataStructures { template < size_t Size, typename T> class Spr1 { /* koda... */ }; }
Šablone se instanciirajo (po njih prevajalnik generira kodo), ko jih prvič uporabiš v neki deklaraciji, pri tem pa jim moraš podati parametre. Šablona, definirana zgoraj, vzame dva parametra. Prvi je konstanta tipa size_t (ali katerega drugega tipa, ki se lahko implicitno pretvori v size_t), drugi pa ime nekega tipa. Torej:
ClassX { /* koda... */ }; const int VELIKOST = 10; DataStructures::Spr1 <VELIKOST, ClassX> ClassY;
Možno je tudi naredit šablono za funkcijo:
template<typename T> void print(T param) { T obj = param; std::cout << i; } int i = 42; print<int>(i); // seznam šablonskih parametrov gre med ime funkcije in seznam parametrov za funkcijo print(i); // lahko ga pa tudi izpustimo
V primeru funkcijske šablone ni vedno treba podat parametrov za šablono. V zgornjem primeru prevajalnik sam deducira tip (T = int) parametra. Precej funkcij v standardni knjižnici je v bistvu šablon (npr. tiste v headerju algorithm), ravno tako razredi vector, list, string, itd...
Vzemi si kakšno knjigo, šablone so lahko precej zoprne za zakapirat :)
Zgodovina sprememb…
- spremenilo: mallard ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | C - shranjevanje rezultatov iz baze v arrayOddelek: Programiranje | 1234 (933) | Randomness |
» | [Java - DN] Naključna številaOddelek: Šola | 1364 (893) | nyler |
» | Analiza kode: goto rabimo po pametiOddelek: Novice / Znanost in tehnologija | 13848 (10408) | one too many |
» | vector::iterator problemi, brisanje podatkov iz vektorjaOddelek: Programiranje | 1135 (986) | mn |
» | [C++] Functor za izračun osnovne statistike podatk. strukture (vector,list...)Oddelek: Programiranje | 1496 (1409) | Vesoljc |