Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 13940|Vastaus: 0

[C++] Pohdin C++:n mallipohjia

[Kopioi linkki]
Julkaistu 4.10.2014 20.45.19 | | |
Korkean tason kielissä käytämme ylikuormitusta funktioille, jota käytetään funktioissa, joissa on eri funktioita mutta sama määrä parametreja, ja erilaisia malleja tarvitaan eri tyypeille ja samalle parametrimäärälle
C++-appletti

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

Tämä on yksinkertainen esimerkki: avainsanatemplate<luokka T> on mallipohjan rakenteen alku, joten meidän ei tarvitse kirjoittaa useita C++-koodia samalla funktiolla toistuvasti etsiessämme maksimiarvoa
Huomaa, että kutsuttaessa funktiota sen tyyppi täsmätään automaattisesti. Sitä ei tarvitse näyttää.
Yllä oleva on peruskäyttö, mutta kohtaamme seuraavat tilanteet

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

Mitä tehdä, kun funktio tarvitsee kahta eri tyyppiä, uskon, että ymmärrät sen lukemalla yllä olevan koodin. Mutta joka tapauksessa, niillä on yhteistä se, että tyypit yhdistetään automaattisesti.
Itse asiassa meillä on myös virheitä, jos emme pysty sovittamaan tyyppiä hyvin, eli "härän pää ei ole oikea", kääntäjän automaattinen vastaavuus muuttaa parametrityyppiä implisiittisen tyyppimuunnoksen sääntöjen mukaisesti, mikä lopulta johtaa tuloksen tarkkuuden heikkenemiseen.
Katso koodia, voit kokeilla.
  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. }
Kopioi koodi
Yllä oleva sisältö ei ole kovin vaikeaa, mutta on myös monia paikkoja, joita voi tutkia, en tiedä mitä mieltä olette





Edellinen:c Mini-ohjelma, jonka on kirjoittanut Inline
Seuraava:Julkaisin logon, joka oli tehty foorumilleni, ja näytin sen kaikille!
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com