Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 13940|Válasz: 0

[C++] Sablonok gondolkodása C++ nyelven

[Linket másol]
Közzétéve 2014. 10. 04. 20:45:19 | | |
A felsőfokú nyelvekben a overloadinget használjuk a függvényekhez, amit különböző függvényekkel, de ugyanannyi paraméterrel rendelkező függvényekben alkalmazzák, és különböző típusokhoz és ugyanannyi paraméterhez sablonokra van szükség
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. }
Kód másolása

Ez egy egyszerű példa: a kulcsszava<osztály T> egy sablonstruktúra kezdete, így nem kell több C++ kódot írnunk ugyanazzal a funkcióval ismétlődve a maximális érték keresése során
Fontos megjegyezni, hogy ha függvényt hívnak, a típusa automatikusan egyezik. Nem kell megmutatni.
A fentiek a legalapvetőbb használat, de a következő helyzetekkel találkozunk

  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. }
Kód másolása

Mit tegyünk, ha a függvényünknek két különböző típusra van szüksége, szerintem megértheted, ha elolvasod a fenti kódot. Mindenesetre az a közös bennük, hogy a típusok automatikusan összeegyeznek.
Valójában vannak hibáink is, ha nem tudjuk jól egyeztetni a típust, vagyis "a bika feje nincs rendben", akkor a fordító automatikus párosítása megváltoztatja a paramétertípust az implicit típusátalakítás szabályai szerint, ami végül az eredmény pontosságának csökkenéséhez vezet.
Nézd meg a kódot, megpróbálhatod.
  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. }
Kód másolása
A fenti tartalom nem túl nehéz, de sok helyet lehet felfedezni, nem tudom, mi a véleményed





Előző:c Mini program, amelyet Inline írt
Következő:Feltettem egy logót, amit a fórumomhoz készítettem, és mindenkinek megmutattam!
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com