Szablony funkcji

Stronę tą wyświetlono już: 282 razy

Szablony funkcji dodają nowej funkcjonalności programowej, tworzy się je za pomocą słowa kluczowego template oraz typename do tworzenia znaczników typów danych szablonu funkcji. Przykładowy kod szablonu funkcji dzielącej jedną wartość przez drugą:

Listing 1
  1. #include <iostream>
  2. using namespace std;
  3. template // oznacza, że to będzie szablon funkcji
  4. <typename typ> // wewnątrz nawiasów <> zapisuje się deklaracje typów (może być ich wiele oddzielonych przecinkami)
  5. typ // zwracana wartość typ
  6. Division(typ a // zmienna typu typ
  7. , typ b // zmienna typu typ
  8. ){
  9. return a / b;
  10. }
  11. int main(){
  12. cout<<"3.5 / 5 = "<<Division<int>(3, 4)<<endl<<endl; // to wywołanie sprawi, że kompilator utworzy automatycznie kod funkcji int Division(int a, int b){return a*b;}
  13. cout<<"3.5 / 5 = "<<Division<double>(3.5, 5.)<<endl<<endl; // to wywołanie sprawi, że kompilator utworzy automatycznie kod funkcji double Division(duble a, double b){return a*b;}
  14. cout<<"Wcisnij dowolny przycisk, aby zamknac program...";
  15. cin.get();
  16. return 0;
  17. }

Kompilator widząc szablon funkcji, oraz mając zadeklarowany konkretny szablon funkcji tworzy dany egzemplarz funkcji zwracający i pobierający dany typ zmiennych. Dzięki takiemu rozwiązaniu programista nie musi tworzyć iluś tam wersji funkcji, aby poprawnie realizować swój projekt, a jedynie wykorzystywać konstrukcję szablonową wszędzie tam, gdzie jest to potrzebne. Warto też zwrócić uwagę na to, że wynikiem działania funkcji pierwszej będzie 0 ponieważ działanie to jest wykonywane na liczbach całkowitych i program zaokrągla wartość w dół. W przypadku drugiej funkcji zwrócona zostanie wartość 0.7 (czyli jak najbardziej poprawna).

Komentarze