metode virtuale

Să ne amintim, în primul rând, că o astfel de template-uri de funcții

Șabloanele sunt introduse pentru a automatiza funcțiile de prelucrare a datelor eterogene. De exemplu, un algoritm de sortare poate fi utilizat pentru orice tip de matrice. Când funcția de suprasarcină pentru fiecare tip care trebuie utilizat este determinată de funcția sa. Funcția șablon este definită o dată, dar definiția este parametrizată, t. e. tipul de date transmise ca parametru șablon. Format Format:

Astfel, o familie de funcții model este format din două părți - antet șablon: șablon<список параметров шаблона> Funcția determinare obișnuită, în care, în loc de tipul de retur și / sau tipul de parametri nume de tipul definit în antetul șablonului înregistrate.

// șablon funcție, care este valoarea absolută a oricărui tip

șablon// tip - tipul de nume parametrizabile

Șablonul utilizat pentru generarea automată a descrierilor specifice ale funcțiilor provocărilor pe care compilatorul găsește în program. De exemplu, în cazul unui apel de program este realizat ca o funcție abs (-1.5), atunci compilatorul va genera funcție dublă definiție abs (double x).

template-uri de clasă precum și șabloanele de funcții de sprijin paradigmă de programare generică, t. e. folosind tipul de programare ca parametri. templates Mecanism în C ++ permite utilizarea de tip abstract ca parametru pentru a determina clasa. Odată ce clasa șablon este definit, acesta poate fi utilizat pentru a identifica clase specifice. Procesul de generare compilator determina clasa specifică a modelului de clasă model și argumente numit instanțierea șablon.

Definirea unui șablon (generic generic,) de clasă este după cum urmează:

șablon <параметры шаблона>

T x, y; // punctul de coordonate

Litera (T X = 0, Y = T 0): x (X), y (Y)<>

neavenită Arată) const (;

punct a (13,15);

punct * Pa = punct nou(10.1,0.55);

Proiectul, care este format din mai multe fișiere, o definiție șablon de clasă este de obicei realizată într-un fișier separat. Dar, în scopul de a instantia o anumită instanță a unui șablon de clasă impune ca definiția șablon a fost într-o unitate de traducere cu acest caz. Prin urmare, toate definiția șablon de clasă este plasat în fișierul antet, atunci fișierul este conectat la fișierul dorit utilizând includ directiva. Că dosarul nu a fost inclus refolosit IFNDEF directivă.

T x, y; // punctul de coordonate

Uneori este necesar să se definească o versiune specializată a șablonului pentru un anumit tip de parametru său (sau unul dintre parametrii).

Luați în considerare raportul dintre T o

șablon clasa de probă

bool Less const (T);

// specializare pentru char *

șablon <> clasa de probă

bool Less const (T);

Pentru a continua descărcarea aveți nevoie pentru a asambla o imagine:

articole similare