V vysokoúrovňových jazykoch používame preťaženie pre funkcie, ktoré sa používa vo funkciách s rôznymi funkciami, ale s rovnakým počtom parametrov, a šablóny sú potrebné pre rôzne typy a rovnaký počet parametrov
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;
- }
Kopírovať kód Toto je jednoduchý príklad: šablóna kľúčového slova<trieda T> je začiatkom štruktúry šablóny, takže pri hľadaní maximálnej hodnoty nemusíme opakovane písať niekoľko C++ kódov s tou istou funkciou Všimnite si, že pri volaní funkcie sa jej typ automaticky zhoduje. Nemusí to byť ukazované. Vyššie uvedené je najzákladnejšie použitie, ale stretneme sa s nasledujúcimi situáciami
- #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;
- }
Kopírovať kód Čo robiť, keď naša funkcia potrebuje dva rôzne typy, myslím, že to pochopíte po prečítaní vyššie uvedeného kódu. Ale čo majú spoločné, je to, že typy sa automaticky párujú. V skutočnosti máme aj chyby, ak nedokážeme dobre priradiť typ, teda "býčia hlava nie je správna", automatické párovanie kompilátora zmení typ parametra podľa pravidiel implicitnej konverzie typu, čo nakoniec povedie k strate presnosti výsledku. Pozri sa na kód, môžeš to skúsiť.
- #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;
- }
Kopírovať kód Vyššie uvedený obsah nie je veľmi náročný, ale existuje veľa miest, ktoré sa dajú preskúmať, neviem, aký máte názor |
|