Acest termen are și alte semnificații, a se vedea modelul.
Șabloanele (șablonul în limba engleză) reprezintă un instrument pentru C ++. Este destinat pentru codarea algoritmilor generalizați. fără legarea la anumiți parametri (de exemplu, tipuri de date, dimensiuni de buffer, valori implicite).
Apoi pentru primul model scriem: pentru al doilea:
Deși șabloane oferă o bucată rapidă a formei de introducere a codului, de fapt, utilizarea lor nu reduce codul executabil, deoarece fiecare set de parametri, compilatorul creează o instanță separată a funcției sau a clasei. Ca urmare, dispare posibilitatea de a partaja codul compilat în cadrul bibliotecilor partajate.
Șabloane de funcții
Sintaxă descriere șablon
șablon Cel mai simplu exemplu este definirea a minimum două cantități. Dacă a este mai mică decât b, atunci returnați a, în caz contrar returnați b În absența șabloanelor, programatorul trebuie să scrie funcții separate pentru fiecare tip de date utilizat. Deși multe limbaje de programare definesc un built-in functie minime pentru tipurile primitive (cum ar fi numere întregi și numere reale), pot fi necesare această funcție pentru complexe (de exemplu, „timp“ sau „linie“) și foarte complex ( „jucător“ în joc on-line) obiecte . Deci, modelul funcției de determinare a aspectului minim: Pentru fiecare set de parametri, compilatorul generează o nouă instanță a funcției. Procesul de creare a unei instanțe noi se numește instanțializarea unui șablon. In exemplul de mai sus, compilatorul a creat un șablon specializare funcție de sortare două (pentru tipurile char și int) și două specializări citesc șablon (pentru BufferSize 20 și 30 de valori). Acesta din urmă este de natură să risipitoare, deoarece pentru fiecare valoare posibilă a parametrului compilatorul va crea mai multe și mai multe exemple de funcții care diferă doar printr-o singură constantă. În unele cazuri, compilatorul poate deduce (determină logic) valoarea parametrului șablon de funcții din argumentul funcției. De exemplu, atunci când apelați funcția de mai sus sort specifica opțional parametru șablon (dacă acesta coincide cu elementele de tip matrice argument): char c [] = "bwda"; sortați (c, strlen (c)); // sortați apelurile În cazul folosirii unor șabloane de clasă cu parametri întregi, este posibil să se deducă și acești parametri. De exemplu: // Utilizând obiectul șablonului IntegerArray<20> IA; PrintArray (ia); Regulile de inferență sunt introduse în limbă pentru a facilita utilizarea șablonului și pentru a evita posibilele erori, de exemplu, o încercare de a utiliza sortarea Dacă parametrul șablonului poate fi afișat pe mai multe argumente, atunci ieșirea ar trebui să fie exact aceeași pentru toate aceste argumente. De exemplu, următoarele apeluri sunt greșite: Unele erori în descrierea șablonului pot fi identificate deja la locul descrierii. Aceste erori nu depind de parametrii specifici. De exemplu: Erori asociate cu utilizarea anumitor parametri de șablon nu pot fi detectate înainte de utilizarea șablonului. De exemplu, șablonul min propriu nu conține erori, ci folosirea acestuia cu tipuri pentru care "<' не определена, приведёт к ошибке: Dacă introduceți operația "<' до первого использования шаблона, то ошибка будет устранена. Так проявляется гибкость шаблонов в C++. min (obj1, obj2); Într-o clasă care implementează o listă legată de numere întregi, adăugarea de noi algoritmi pentru elementul din listă, căutați elementul dorit nu depinde de faptul că lista elementelor - numere întregi. Aceleași algoritmi ar fi aplicate pe lista de simboluri, șiruri de caractere, date, clase de jucători și așa mai departe. Pentru a utiliza un șablon de clasă, trebuie să specificați parametrii săi: Parametrii șabloanelor pot fi: parametrii-tipuri, parametrii tipurilor obișnuite, parametrii-șabloane. Pentru parametrii de orice tip, puteți specifica valorile implicite. Dacă doriți să utilizați același șablon într-un șablon al unei clase sau funcții, dar cu parametri diferiți, atunci sunt utilizați parametrii șablonului. De exemplu: Pentru parametrii care sunt tipuri (de exemplu, parametrul T al funcției de sortare), ieșirea este posibilă dacă argumentul funcției are unul dintre următoarele tipuri:Exemplu de utilizare
Derivarea valorilor parametrilor
Erori în șabloane
Șabloane de clasă
Utilizarea șabloanelor
Detaliile tehnice
Setările șablonului
Opțiuni de șablon
Reguli pentru derivarea argumentelor pentru un șablon de funcții
Articole similare