Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 13940|Odpověď: 0

[C++] Přemýšlím o šablonách v C++

[Kopírovat odkaz]
Zveřejněno 04.10.2014 20:45:19 | | |
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

  1. #include<iostream>
  2. using namespace std;

  3. template <class T>
  4. T max(T a,T b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a,b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
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

  1. #include<iostream>
  2. using namespace std;

  3. template <class T,class E>
  4. E max(T a,E b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a;float b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
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.
  1. #include<iostream>
  2. using namespace std;

  3. template <class T,class E>
  4. E max(T a,E b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a;float b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
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





Předchozí:c Mini program napsaný Inline
Další:Zveřejnil jsem logo vytvořené pro své fórum a ukázal ho všem!
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com