Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 13940|Svar: 0

[C++] At tænke på skabeloner i C++

[Kopier link]
Opslået på 04/10/2014 20.45.19 | | |
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

  1. #include<iostream>
  2. using namespace std;

  3. template <class T>
  4. T max(T a,T b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a,b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
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

  1. #include<iostream>
  2. using namespace std;

  3. template <class T,class E>
  4. E max(T a,E b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a;float b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
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.
  1. #include<iostream>
  2. using namespace std;

  3. template <class T,class E>
  4. E max(T a,E b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a;float b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
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





Tidligere:c Mini-program skrevet af Inline
Næste:Jeg lagde et logo op til mit forum og viste det til alle!
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com