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++
- #include<iostream>
- using namespace std;
- template <class T>
- T max(T a,T b)
- {
- return a>b?a:b;
- }
- int main()
- {
- int a,b;cin>>a>>b;
- cout<<max(a,b);
- return 0;
- }
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
- #include<iostream>
- using namespace std;
- template <class T,class E>
- E max(T a,E b)
- {
- return a>b?a:b;
- }
- int main()
- {
- int a;float b;cin>>a>>b;
- cout<<max(a,b);
- return 0;
- }
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ć.
- #include<iostream>
- using namespace std;
- template <class T,class E>
- E max(T a,E b)
- {
- return a>b?a:b;
- }
- int main()
- {
- int a;float b;cin>>a>>b;
- cout<<max(a,b);
- return 0;
- }
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 |
|