Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 13940|Odpowiedź: 0

[C++] Myślenie o szablonach w C++

[Skopiuj link]
Opublikowano 04.10.2014 20:45:19 | | |
W językach wysokiego poziomu używamy przeciążenia dla funkcji, które jest używane w funkcjach z różnymi funkcjami, ale z tą samą liczbą parametrów, a szablony są potrzebne dla różnych typów i tej samej liczby parametrów
Applet C++

  1. #include<iostream>
  2. using namespace std;

  3. template <class T>
  4. T max(T a,T b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a,b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
Skopiuj kod

To prosty przykład: szablon słowa kluczowego<klasa T> to początek struktury szablonu, dzięki czemu nie musimy wielokrotnie pisać kilku kodów C++ z tą samą funkcją podczas poszukiwania maksymalnej wartości
Należy zauważyć, że podczas wywoływania funkcji jej typ jest automatycznie dopasowany. Nie trzeba go pokazywać.
Powyższe jest najbardziej podstawowym użyciem, ale spotkamy się z następującymi sytuacjami

  1. #include<iostream>
  2. using namespace std;

  3. template <class T,class E>
  4. E max(T a,E b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a;float b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
Skopiuj kod

Co robić, gdy nasza funkcja potrzebuje dwóch różnych typów? Myślę, że można to zrozumieć po przeczytaniu powyższego kodu. Ale tak czy inaczej, łączy je to, że typy są automatycznie dopasowane.
W rzeczywistości zdarzają się też błędy, jeśli nie możemy dobrze dopasować typu, czyli "głowa byka jest nieprawidłowa", to automatyczne dopasowanie kompilatora zmieni typ parametru zgodnie z regułami konwersji typów niejawnych, co ostatecznie prowadzi do utraty dokładności wyniku.
Spójrz na kod, możesz spróbować.
  1. #include<iostream>
  2. using namespace std;

  3. template <class T,class E>
  4. E max(T a,E b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a;float b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
Skopiuj kod
Powyższa treść nie jest bardzo trudna, ale jest też wiele miejsc, które można zbadać, nie wiem, jakie są wasze opinie





Poprzedni:c Mini program napisany przez Inline
Następny:Opublikowałem logo stworzone na moje forum i pokazałem je wszystkim!
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com