Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 13940|Odgovoriti: 0

[C++] Razmišljam o predlogah v C++

[Kopiraj povezavo]
Objavljeno na 4. 10. 2014 20:45:19 | | |
V visokonivojskih jezikih uporabljamo preobremenitev za funkcije, ki se uporablja pri funkcijah z različnimi funkcijami, a z enakim številom parametrov, predloge pa so potrebne za različne tipe in enako število 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. }
Kopiraj kodo

To je preprost primer: predloga ključne besede<razred T> je začetek strukture predloge, tako da nam ni treba večkrat pisati več C++ kod z isto funkcijo, ko iščemo največjo vrednost
Upoštevajte, da se ob klicu funkcije njen tip samodejno ujema. Ni ga treba prikazovati.
Zgornje je najbolj osnovna uporaba, vendar se bomo srečali z naslednjimi situacijami

  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. }
Kopiraj kodo

Kaj storiti, ko naša funkcija potrebuje dve različni vrsti, mislim, da lahko to razumete po branju zgornje kode. Kakorkoli že, kar imata skupnega, je, da se tipi samodejno ujemata.
Pravzaprav imamo tudi napake, če ne moremo dobro ujeti tipa, torej "bikova glava ni pravilna", bo samodejno ujemanje prevajalnika spremenilo tip parametra glede na pravila implicitnega pretvorbe tipov, kar bo sčasoma povzročilo izgubo natančnosti rezultata.
Poglej kodo, lahko poskusiš.
  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. }
Kopiraj kodo
Zgornja vsebina ni zelo zahtevna, a obstaja tudi veliko področij, ki jih lahko raziščemo, ne vem, kakšno je vaše mnenje





Prejšnji:c Mini program, ki ga je napisal Inline
Naslednji:Objavil sem logotip, narejen za moj forum, in ga pokazal vsem!
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com