See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 13940|Vastuse: 0

[C++] Mõtlemine mallidele C++ keeles

[Kopeeri link]
Postitatud 04.10.2014 20:45:19 | | |
Kõrgetasemelistes keeltes kasutame funktsioonide jaoks ülekoormust, mida kasutatakse funktsioonides, millel on erinevad funktsioonid, kuid sama arv parameetreid, ning erinevate tüüpide ja sama arvu parameetrite jaoks on vaja malle
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. }
Kopeeri kood

See on lihtne näide: märksõna mall<klass T> on mallistruktuuri algus, nii et me ei pea kirjutama mitut C++ koodi sama funktsiooniga, kui otsime maksimaalset väärtust
Pane tähele, et funktsiooni kutsumisel sobitatakse selle tüüp automaatselt. Seda ei pea näitama.
Ülaltoodud on kõige lihtsam kasutusviis, kuid kohtame järgmisi olukordi

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

Mida teha, kui meie funktsioon vajab kahte erinevat tüüpi, arvan, et saate sellest aru pärast eelneva koodi lugemist. Aga igatahes, mis neil ühist on, on see, et tüübid sobitatakse automaatselt.
Tegelikult on meil ka vigu, kui me ei suuda tüüpi hästi sobitada, st "pulli pea ei ole õige", siis kompilaatori automaatne sobitamine muudab parameetri tüüpi vastavalt implitsiitse tüübi teisendamise reeglitele, mis lõpuks viib tulemuse täpsuse languseni.
Vaata koodi, võid proovida.
  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. }
Kopeeri kood
Ülaltoodud sisu ei ole väga keeruline, aga on ka palju kohti, mida saab avastada, ma ei tea, mis on teie arvamus





Eelmine:c Miniprogramm, mille on kirjutanud Inline
Järgmine:Postitasin oma foorumile tehtud logo ja näitasin seda kõigile!
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com