Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 13940|Odpoveď: 0

[C++] Premýšľam o šablónach v C++

[Kopírovať odkaz]
Zverejnené 4. 10. 2014 20:45:19 | | |
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

  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í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

  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í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ť.
  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í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





Predchádzajúci:c Mini program napísaný spoločnosťou Inline
Budúci:Zverejnil som logo vytvorené pre svoje fórum a ukázal ho všetkým!
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com