I högnivåspråk använder vi överbelastning för funktioner, vilket används i funktioner med olika funktioner men med samma antal parametrar, och mallar behövs för olika typer och samma antal parametrar
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;
- }
Kopiera koden Detta är ett enkelt exempel: nyckelordsmallen<klassen T> är början på en mallstruktur, så att vi inte behöver skriva flera C++-kod med samma funktion upprepade gånger när vi letar efter det maximala värdet Observera att när man anropar en funktion matchas dess typ automatiskt. Det behöver inte visas. Ovanstående är den mest grundläggande användningen, men vi kommer att stöta på följande situationer
- #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;
- }
Kopiera koden Vad man ska göra när vår funktion behöver två olika typer, tror jag att du kan förstå det efter att ha läst koden ovan. Men i alla fall, det de har gemensamt är att typerna automatiskt matchas. Faktum är att vi också har misstag, om vi inte kan matcha typen väl, det vill säga "tjurens huvud är inte rätt", kommer kompilatorns automatiska matchning att ändra parametertypen enligt reglerna för implicit typkonvertering, vilket så småningom leder till förlust av resultatets noggrannhet. Titta på koden, du kan försöka.
- #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;
- }
Kopiera koden Ovanstående innehåll är inte särskilt svårt, men det finns också många områden som kan utforskas, jag vet inte vad ni tycker |
|