In hoog-niveau talen gebruiken we overload voor functies, wat wordt gebruikt in functies met verschillende functies maar hetzelfde aantal parameters, en sjablonen zijn nodig voor verschillende types en hetzelfde aantal parameters
C++ applet
- #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;
- }
Code kopiëren Dit is een eenvoudig voorbeeld: de trefwoordsjabloon<klasse T> is het begin van een sjabloonstructuur, zodat we niet meerdere C++-code met dezelfde functie steeds hoeven te schrijven bij het zoeken naar de maximale waarde Let op dat bij het aanroepen van een functie het type automatisch wordt gematcht. Het hoeft niet getoond te worden. Bovenstaande is het meest basale gebruik, maar we zullen de volgende situaties tegenkomen
- #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;
- }
Code kopiëren Wat te doen als onze functie twee verschillende types nodig heeft, denk ik dat je het kunt begrijpen na het lezen van bovenstaande code. Maar goed, wat ze gemeen hebben is dat de types automatisch worden gematcht. In feite maken we ook fouten: als we het type niet goed kunnen matchen, dat wil zeggen: "de bull's head is niet goed", dan zal de automatische matching van de compiler het parametertype veranderen volgens de regels van impliciete typeconversie, wat uiteindelijk zal leiden tot verlies van nauwkeurigheid van het resultaat. Kijk naar de code, je kunt het proberen.
- #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;
- }
Code kopiëren De bovenstaande inhoud is niet erg moeilijk, maar er zijn ook veel plekken die je kunt verkennen, ik weet niet wat jullie meningen zijn |
|