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ė
- #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;
- }
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
- #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;
- }
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.
- #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;
- }
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ė |
|