|
|
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
- #include<iostream>
- using namespace std;
- template <class T>
- T max(T a,T b)
- {
- return a>b?a:b;
- }
- int main()
- {
- int a,b;cin>>a>>b;
- cout<<max(a,b);
- return 0;
- }
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
- #include<iostream>
- using namespace std;
- template <class T,class E>
- E max(T a,E b)
- {
- return a>b?a:b;
- }
- int main()
- {
- int a;float b;cin>>a>>b;
- cout<<max(a,b);
- return 0;
- }
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.
- #include<iostream>
- using namespace std;
- template <class T,class E>
- E max(T a,E b)
- {
- return a>b?a:b;
- }
- int main()
- {
- int a;float b;cin>>a>>b;
- cout<<max(a,b);
- return 0;
- }
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 InlineSeuraava:Julkaisin logon, joka oli tehty foorumilleni, ja näytin sen kaikille!
|