Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 13940|Antwoord: 0

[C++] Denken aan sjablonen in C++

[Link kopiëren]
Geplaatst op 04-10-2014 20:45:19 | | |
In hoog-niveau talen gebruiken we overload voor functies, wat wordt gebruikt in functies met verschillende functies maar hetzelfde aantal parameters, en sjablonen zijn nodig voor verschillende types en hetzelfde aantal parameters
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. }
Code kopiëren

Dit is een eenvoudig voorbeeld: de trefwoordsjabloon<klasse T> is het begin van een sjabloonstructuur, zodat we niet meerdere C++-code met dezelfde functie steeds hoeven te schrijven bij het zoeken naar de maximale waarde
Let op dat bij het aanroepen van een functie het type automatisch wordt gematcht. Het hoeft niet getoond te worden.
Bovenstaande is het meest basale gebruik, maar we zullen de volgende situaties tegenkomen

  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. }
Code kopiëren

Wat te doen als onze functie twee verschillende types nodig heeft, denk ik dat je het kunt begrijpen na het lezen van bovenstaande code. Maar goed, wat ze gemeen hebben is dat de types automatisch worden gematcht.
In feite maken we ook fouten: als we het type niet goed kunnen matchen, dat wil zeggen: "de bull's head is niet goed", dan zal de automatische matching van de compiler het parametertype veranderen volgens de regels van impliciete typeconversie, wat uiteindelijk zal leiden tot verlies van nauwkeurigheid van het resultaat.
Kijk naar de code, je kunt het proberen.
  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. }
Code kopiëren
De bovenstaande inhoud is niet erg moeilijk, maar er zijn ook veel plekken die je kunt verkennen, ik weet niet wat jullie meningen zijn





Vorig:c Mini-programma geschreven door Inline
Volgend:Ik plaatste een logo dat voor mijn forum was gemaakt en liet het aan iedereen zien!
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com