I høynivåspråk bruker vi overbelastning for funksjoner, som brukes i funksjoner med forskjellige funksjoner, men med samme antall parametere, og maler trengs for ulike typer og samme antall parametere
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 koden Dette er et enkelt eksempel: nøkkelordmalen<klassen T> er begynnelsen på en malstruktur, slik at vi ikke trenger å skrive flere C++-koder med samme funksjon gjentatte ganger når vi leter etter maksimal verdi Merk at når man kaller en funksjon, matches typen automatisk. Det trenger ikke å vises. Ovenstående er den mest grunnleggende bruken, men vi vil møte følgende situasjoner
- #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 koden Hva man skal gjøre når funksjonen vår trenger to forskjellige typer, tror jeg du kan forstå det etter å ha lest koden ovenfor. Men uansett, det de har til felles er at typene automatisk matches. Faktisk har vi også feil; hvis vi ikke kan matche typen godt, altså «oksehodet er ikke riktig», vil kompilatorens automatiske matching endre parametertypen i henhold til reglene for implisitt typekonvertering, noe som til slutt vil føre til tap av nøyaktighet i resultatet. 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 koden Innholdet ovenfor er ikke veldig vanskelig, men det finnes også mange steder som kan utforskes, jeg vet ikke hva dere mener |
|