Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 13940|Atsakyti: 0

[C++] Galvoju apie C++ šablonus

[Kopijuoti nuorodą]
Paskelbta 2014-10-04 20:45:19 | | |
Aukšto lygio kalbose funkcijoms naudojame perkrovą, kuri naudojama funkcijose su skirtingomis funkcijomis, bet su tuo pačiu parametrų skaičiumi, o šablonai reikalingi skirtingiems tipams ir tam pačiam parametrų skaičiui
C++ programėlė

  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. }
Kopijuoti kodą

Tai paprastas pavyzdys: raktažodžio šablonas<klasė T> yra šablono struktūros pradžia, todėl ieškant maksimalios vertės nereikia pakartotinai rašyti kelių C++ kodų su ta pačia funkcija
Atkreipkite dėmesį, kad iškviečiant funkciją, jos tipas automatiškai sutampa. Jo nereikia rodyti.
Aukščiau pateiktas yra pats paprasčiausias vartojimas, tačiau susidursime su šiomis situacijomis

  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. }
Kopijuoti kodą

Ką daryti, kai mūsų funkcijai reikia dviejų skirtingų tipų, manau, kad galite tai suprasti perskaitę aukščiau pateiktą kodą. Bet šiaip ar taip, juos sieja tai, kad tipai automatiškai sutampa.
Tiesą sakant, mes taip pat turime klaidų, jei negalime gerai suderinti tipo, tai yra "jaučio galva neteisinga", tada automatinis kompiliatoriaus suderinimas pakeis parametro tipą pagal numanomo tipo konvertavimo taisykles, o tai ilgainiui praras rezultato tikslumą.
Pažiūrėkite į kodą, galite pabandyti.
  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. }
Kopijuoti kodą
Aukščiau pateiktas turinys nėra labai sunkus, tačiau taip pat yra daug vietų, kurias galima ištirti, nežinau, kokia jūsų nuomonė





Ankstesnis:c Mini programa parašyta Inline
Kitą:Paskelbiau savo forumui sukurtą logotipą ir parodžiau jį visiems!
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com