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
- #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;
- }
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
- #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;
- }
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.
- #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;
- }
Kopeeri kood Ülaltoodud sisu ei ole väga keeruline, aga on ka palju kohti, mida saab avastada, ma ei tea, mis on teie arvamus |
|