Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 13940|Svar: 0

[C++] Tänker på mallar i C++

[Kopiera länk]
Publicerad på 2014-10-04 20:45:19 | | |
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

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

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





Föregående:c Mini-program skrivet av Inline
Nästa:Jag lade upp en logotyp gjord för mitt forum och visade den för alla!
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com