V jazycích vysoké úrovně používáme přetížení funkcí, které se používá u funkcí s různými funkcemi, ale se stejným počtem parametrů, a šablony jsou potřeba pro různé typy a stejný počet parametrů
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írovat kód Toto je jednoduchý příklad: šablona klíčového slova<třída T> je začátkem struktury šablony, takže při hledání maximální hodnoty nemusíme opakovaně psát několik kódů v C++ se stejnou funkcí Všimněte si, že při volání funkce se její typ automaticky shoduje. Nemusí se ukazovat. Výše uvedené je nejzákladnější použití, ale setkáme se s následujícími situacemi
- #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írovat kód Co dělat, když naše funkce potřebuje dva různé typy, myslím, že to pochopíte po přečtení výše uvedeného kódu. Každopádně mají společné to, že typy jsou automaticky párovány. Ve skutečnosti se vyskytují i chyby, pokud nedokážeme dobře spárovat typ, tedy "býčí hlava není správná", pak automatické párování kompilátorem změní typ parametru podle pravidel implicitní konverze typů, což nakonec povede ke ztrátě přesnosti výsledku. Podívej se na kód, můžeš to zkusit.
- #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írovat kód Výše uvedený obsah není moc obtížný, ale existuje mnoho míst, která lze prozkoumat, nevím, jaký máte názor |
|