Anta at du vil bygge et C + + klassen til å representere komplekse tall siden C + + inkluderer ikke en datatype for dem . Den " Complex " klasse må håndtere tall av typen int , float og double . Du kan gjenta 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. Instruksjoner
en
Bli kjent med malen syntaks hvis du ikke allerede. Å erklære en mal klasse , sett inn følgende kodelinje rett over klasse erklæring , som vist :
mal
klasse Complex { Twitter //osv. ..
2
Merk at "mal" og " class" er nøkkelord . "T" er navnet du gir generisk datatype. T kan ta form av en int , float eller double . Du må alltid legge "klasse" og " T" i vinkel parentes . Du kan også bruke søkeordet " TypeName " 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æringen der du vil generisk behandling . Medlemsdata "ekte" og " forestille " er av type T fordi de kan ta identiteten til en rekke type. Medlemmet funksjon Real ( ) er prototyper med T fordi det kan returnere tall av type int , float eller double :
mal
klasse Complex {
T real , imag ;
publikum :
Complex ( konst T r , konst T i) : real ( ( T) 0 ) , ( ( T) 0 ) { } T real ( ) const ; Twitter //etc. ..
4
Gjenta malen definisjon for hvert medlem funksjon du har definert utenfor klassen kroppen. Også plassere T parameter inne Vinkelparentesene og sette det mellom klasse navn og omfanget operatør , som følger : en mal
T Complex :: Real ( ) const {
retur ekte,
}
5 Demonstrer Complex objekt som bruker int og en som bruker float:
int main ( ) {
Complex ni ( 4 , -5 ), //skjema 4 - j5
Complex nf ( 4.f , - 5.f ), //form 4,0 - j5.0
domstol domstol }
6
Lær hvordan du bruker container klasser som vektor 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 .