I højniveausprog bruger vi overbelastning til funktioner, hvilket bruges i funktioner med forskellige funktioner, men med samme antal parametre, og der er brug for skabeloner til forskellige typer og samme antal parametre
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;
- }
Kopier kode Dette er et simpelt eksempel: nøgleordsskabelonen<klassen T> er begyndelsen på en skabelonstruktur, så vi ikke behøver at skrive flere C++-kode med den samme funktion gentagne gange, når vi leder efter den maksimale værdi Bemærk, at når en funktion kaldes, matches dens type automatisk. Det behøver ikke vises. Ovenstående er den mest grundlæggende anvendelse, men vi vil støde på følgende 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;
- }
Kopier kode Hvad man skal gøre, når vores funktion har brug for to forskellige typer, tror jeg, du kan forstå det efter at have læst ovenstående kode. Men under alle omstændigheder har de det til fælles, at typerne automatisk matches. Faktisk har vi også fejl; hvis vi ikke kan matche typen godt, altså "tyrens hoved er ikke rigtigt", så vil compilerens automatiske matching ændre parametertypen i henhold til reglerne for implicit typekonvertering, hvilket til sidst vil føre til tab af resultatets nøjagtighed. Se på koden, du kan prøve.
- #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;
- }
Kopier kode Ovenstående indhold er ikke særlig svært, men der er også mange steder, der kan udforskes, jeg ved ikke, hvad jeres meninger er |
|