Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 13940|Atbildi: 0

[C++] Domājot par veidnēm C++

[Kopēt saiti]
Publicēts 04.10.2014 20:45:19 | | |
Augsta līmeņa valodās mēs izmantojam funkciju pārslodzi, kas tiek izmantota funkcijās ar dažādām funkcijām, bet ar vienādu parametru skaitu, un veidnes ir nepieciešamas dažādiem tipiem un vienādam parametru skaitam
C++ sīklietotne

  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ēt kodu

Šis ir vienkāršs piemērs: atslēgvārdu veidne<klase T> ir veidnes struktūras sākums, tāpēc, meklējot maksimālo vērtību, mums nav atkārtoti jāraksta vairāki C++ kodi ar vienu un to pašu funkciju
Ņemiet vērā, ka, izsaucot funkciju, tās tips tiek automātiski saskaņots. Tas nav jāparāda.
Iepriekš minētais ir visvienkāršākais lietojums, taču mēs saskarsimies ar šādām situācijām

  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ēt kodu

Ko darīt, ja mūsu funkcijai ir nepieciešami divi dažādi veidi, es domāju, ka jūs to varat saprast pēc iepriekš minētā koda izlasīšanas. Bet jebkurā gadījumā viņiem ir kopīgs tas, ka veidi tiek automātiski saskaņoti.
Faktiski mums ir arī kļūdas, ja mēs nevaram labi saskaņot tipu, tas ir, "buļļa galva nav pareiza", tad kompilatora automātiskā atbilstība mainīs parametru tipu saskaņā ar netiešā tipa konvertēšanas noteikumiem, kas galu galā novedīs pie rezultāta precizitātes zuduma.
Apskatiet kodu, varat izmēģināt.
  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ēt kodu
Iepriekš minētais saturs nav ļoti grūti, bet ir arī daudzas vietas, kuras var izpētīt, es nezinu, kādi ir jūsu viedokļi





Iepriekšējo:c Mini programma, ko rakstīja Inline
Nākamo:Es ievietoju logotipu, kas izveidots manam forumam, un parādīju to visiem!
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com