Hvordan bruke C ++ klasse Maler

Tenk deg at du ønsker å bygge et C ++ klasse til å representere komplekse tall siden C ++ ikke inkluderer en datatype for dem. Den "Complex" klasse må håndtere antall type int, float og double. Du kan gjenta det samme kode tre ganger, eller du kan skrive det en gang og bruke maler som støtter generiske datatyper. På slutten, vil klassen din se ut som en av de STL container klasser.

Bruksanvisning

1 Bli kjent med malen syntaksen hvis du ikke allerede. Å erklære en mal klasse, sett inn følgende kodelinje rett over klassen erklæringen, som vist:

mal <class T>

klasse Complex {

// etc...

2 Merk at "malen" og "klasse" er nøkkelord. "T" er navnet du gir generisk datatype. T kan ta form av en int, float eller dobbelt. Du må alltid legge "klasse" og "T" i vinkelparenteser. Du kan også bruke søkeordet "type-navn" i stedet for "klasse". Selv om disse søkeordene har en noe annen betydning i C ++, i forbindelse med denne opplæringen, er de tilsvarende.

3 Bruk "T" i klassen kroppen erklæring der du vil generisk behandling. Medlemsdata "ekte" og "imag" er av type T fordi de kan ta identiteten til en rekke type. Medlemmet funksjonen Fast () er prototyper med T fordi det kan returnere antall typen int, float eller dobbelt:

mal <class T>

klasse Complex {

T real, imag;

offentlig:

Complex (konst T r, const T i): real ((T) 0), ((T) 0) {}
T Fast () const;

// etc...

4 Gjenta malen definisjon for hvert medlem funksjonen definert utenfor klassen kroppen. Også plassere T parameter inne vinkelparenteser og sette det mellom klassenavnet og omfanget operatør, som følger:

mal <class T>

T Complex <T> :: Fast () const {

returnere ekte;

}

5 Demonstrere et komplekst objekt som bruker int og en som bruker float:

int main () {

Komplekse ni <int> (4, -5); // Skjema 4 - j5

Complex nf <float> (4.f, -5.f); // Skjema 4.0 - j5.0

cout << ni.Real () << endl; // Print 4

cout << nf.Real () << endl; // Skriver ut 4,0

}

6 Lær hvordan du bruker container klasser som vektor <T> og algoritmer som kopi (). Studer STL. Siden Standard Template Library er et generisk bibliotek bygget av maler, er det et utmerket sted å lære å bygge generiske klasser ved hjelp av maler.