Jawna konkretyzacja szablonu
Ostatnio zmodyfikowano 2016-01-22 17:54
Alkos Temat założony przez niniejszego użytkownika |
Jawna konkretyzacja szablonu » 2016-01-21 21:21:09 Witam. Krótkie pytanko, czy dobrze to opisałem w komentarzach? template < typename T > T Add( T, T );
template int Add < int >( int, int );
int main() { int a = 1, b = 2; Add( a, b ); ... }
template < typename T > T Add( T a, T b ) {...}
+ zauważyłem że obiekt string jest statyczny mam racje? |
|
j23 |
» 2016-01-22 10:25:22 1. Ok. 2. co masz na myśli "string jest statyczny"? |
|
Alkos Temat założony przez niniejszego użytkownika |
» 2016-01-22 13:28:19 1. Zadałem takie pytanie, bo nie rozumiem jaka jest różnica jeżeli nakażemy kompilatorowi wygenerowanie funkcji a jeżeli sam to wywnioskuje, przecież na jedno wychodzi, a musimy napisać jedną linijkę więcej w przypadku jawnej. Nie biorę tu pod uwagę jawnej konkretyzacji z rzutowaniem typu np. Add < float >( a, b ); taka instrukcja ma zastosowanie. Może mi to przybliżysz? :) 2. Przyjmijmy że nie było pytania :D Sam nie wiem dlaczego ale jeszcze wczoraj kod podobny do tego: string * bat();
int main() { string * widzisz = bat(); cout << * widzisz; }
string * bat() { string tekst = "Zmienna lokalna"; return & tekst; }
Nie pokazałby śmieci tylko zachowałby się jakby zaszła taka modyfikacja: static string tekst = "Zmienna lokalna"; Ale ok, najwidoczniej coś mi się przyśniło :D |
|
j23 |
» 2016-01-22 17:54:18 Jawna konkretyzacja ma sens przy tworzeniu bibliotek, kiedy zależy Ci na tym, żeby implementacje metod/funkcji dla danych parametrów szablonu były zawarte w bibliotece DLL czy LIB. To daje Ci możliwość ukrywania implementacji szablonu, a co za tym idzie ograniczenie szablonu do konkretnych typów. |
|
« 1 » |