C++/Szablony funkcji

< C++

Szablon funkcji

edytuj

Szablon funkcji pozwala stworzyć wiele funkcji różniących się tylko typem argumentów przyjmowanych. Załóżmy, że chcielibyśmy napisać funkcję pisz, której jedynym argumentem byłaby zmienna, którą chcemy wypisać. Aby móc wypisywać wiele typów zmiennych możemy skorzystać z przeładowania (inna nazwa na przeciążenie) funkcji.

        void pisz(char a)
           {
               cout<<a;
           }
        void pisz(double a)
           {
               cout<<a;
           }
        void pisz(int a)
           {
               cout<<a;
           }

Można tak wiele razy przeładowywać funkcję pisz, ale można też wskazać kompilatorowi w jaki sposób może stworzyć nowe funkcje. Są to właśnie szablony.

Szablon naszej funkcji wyglądałby tak:

    template <typename T> void pisz(T a)
       {
          cout<<a;
       }

Pierwszą linijkę można też złamać po nawiasie '>':

       template <typename T>
       void pisz(T arg)

Pierwszym słowem jest template czyli szablon. Następnie w ostrych nawiasach umieszcza się słowo typename (zamiennie struct lub class), które może oznaczać dowolny typ danych. Można także stosować słowo typedef przy zagnieżdżaniu szablonów, tak aby uniknąć nieprecyzyjności. Można także stosować nazwy typów, takich jak int czy char Nazwa użyta po słowach kluczowych zastępuje w deklaracji funkcji typ argumentu.

Nie można stosować szablonów dla metod wirtualnych.