Zdravím najel sem na téma šablony a chtěl sem se zeptat proč u všech příkladů co sem našel se značí
<class T > nebo <class T1, class T2>
nepochopil sem značení toho T ... a proč zrovna T má to nějaký bližší důvod ? Díky
Zdravím najel sem na téma šablony a chtěl sem se zeptat proč u všech příkladů co sem našel se značí
<class T > nebo <class T1, class T2>
nepochopil sem značení toho T ... a proč zrovna T má to nějaký bližší důvod ? Díky
Muzes si to pojmenovat jak chces. To T znamena pravdepodobne neco jako Template nebo Type.
Je to pomerne zazita vec, takze kdyz clovek nekde vidi T, tak to ma v zasade neco spolecneho s templatama. Neco jako i pro indexy.
#2 KIIV
když ještě neexistovaly Templates a Generics někde na konci 80. let v C++ tak si dělal třeba tohle:
single secti(single a, single b){ return a+b }
double secti(double a, double b){ return a+b }
je to blbej příklad ale názornej... no a pak někoho napadlo že se napíše
T secti(T a, T b){ return a+b} a typ T se určí dynamicky až v době běhu programu neboli při výpočtu...takže ti stačilo napsat jenom jednu funkci/objekt atd... nevýhoda byla že teplate musí bejt CELEJ napsanej v .h souboru a to je blbý a taky ho kompilátor přeloží tak, že pro každej "problém" udělá v paměti jednu kopii - to je týká hlavně objektů, a tak eště lidi vymysleli Generic a ten se dá deklarovat/definovat jak v .h tak i v .cpp souborech a navíc se používá jen jedna kopie v paměti, která řídí vše - teda ono je to složitější ale tak nějak pro začátek ti to stačí :) Teplates používej až se pořádně naučíš programovat :), některý problémy se bohužel nedají už dnes řešit jinak než pomocí teplates a navíc existují problémy, které nejdou napsat jinak než kombinací Templates a Generics.... je to docela složitý na hlavu obzvlášť ve vlkejch projektech a proto se obojí používá spíše v knihovních procedurách ...
#3 jerry
s generic sem se teda jeste nesetkal, ale to bude asi tim, ze to bude zase nejaka vychytavka microsoftu mimo jakykoliv standard C++. Tj. jakmile to clovek pouzije, uz to nikdy nezkompiluje jinde.
Ale ano jak se pouzijou nejake slozitejsi templaty, tak kod dokaze pekne nabobtnat. Obzvlaste na jednocipech je to hodne neprijemne. Ale aspon to pak clovek neprehani.
Jinak technicky vzato jde implementaci template udelat v cpp souboru, ale musi se udelat veskere instanciace vsech typu, pro ktere to clovek chce pouzit. Coz je obvykle narocne az nemozne, a pri prvnim pouziti se narazi na neco, na co to neni pripravene. Proto to nema smysl delat nebo se o to spis pokouset.
Pak je jeste potreba davat bacha na pretezovani funkci a zaroven jeste templaty. Spolehlive se vybere jina implementace nez by kdo chtel. Proste takovejm saskarnam je zase lepsi se uplne vyhnout.
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku