Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Jawna konkretyzacja szablonu

Ostatnio zmodyfikowano 2016-01-22 17:54
Autor Wiadomość
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?

C/C++
template < typename T >
T Add( T, T );

template int Add < int >( int, int ); // to jest jawna konkretyzacja
// na podstawie szablonu od razu zostanie wygenerowana funkcja int Add(int, int)

int main() {
    int a = 1, b = 2;
    Add( a, b ); // użycie wcześniej wygenerowanej funkcji
    ...
}

template < typename T >
T Add( T a, T b ) {...}

+ zauważyłem że obiekt string jest statyczny mam racje?
P-143867
j23
» 2016-01-22 10:25:22
1. Ok.
2. co masz na myśli "string jest statyczny"?
P-143873
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:
C/C++
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
P-143885
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.
P-143892
« 1 »
  Strona 1 z 1