Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 13940|Svare: 0

[C++] Tenker på maler i C++

[Kopier lenke]
Publisert på 04.10.2014 20:45:19 | | |
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

  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 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

  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 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.
  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 koden
Innholdet ovenfor er ikke veldig vanskelig, men det finnes også mange steder som kan utforskes, jeg vet ikke hva dere mener





Foregående:c Mini-program skrevet av Inline
Neste:Jeg la ut en logo laget for forumet mitt og viste den til alle!
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com