Anta att du vill bygga en C + + klass för att representera komplexa tal eftersom C + + omfattar inte en datatyp för dem . Den " Complex " klass måste hantera tal av typen int , float och double . Du kan upprepa samma kod tre gånger , eller du kan skriva det en gång och använda mallar som stödjer generiska datatyper . I slutet kommer din klass ser ut som en av de STL container klasser . Instruktioner
1
Bekanta dig med mallsyntax om du inte redan . Att förklara en mall klass , infoga följande kodrad omedelbart ovanför klassdeklarationen , som visas :
mall
class Complex {
//etc. ..
2
Observera att " mall " och " class " är nyckelord . " T " är det namn du ger den generiska datatypen . T kan ta formen av en int , float eller double . Du måste alltid bifoga " klass " och " T " i hakparenteser . Du kan också använda nyckelordet " TypeName " i stället för " klass . " Även om dessa sökord har en något annorlunda betydelse i C + + , inom ramen för denna tutorial , de är likvärdiga .
3
Använd " T " i klassen kroppen deklaration där du vill generiska bearbetning . Medlemsinformation " riktiga " och " imag " är av typ T , eftersom de kan ta identiteten på valfritt antal slag . Delfunktionen Real ( ) är prototyped med T eftersom det kan returnera antalet typen int , float eller double :
mall
class Complex {
T real , imag ,
allmänheten :
Complex ( const T R , const T i) : real ( ( T ) 0 ) , ( ( T ) 0 ) { } T Real ( ) const; Twitter //etc. ..
4
Upprepa mallen definition för varje medlem funktion du definierat utanför klassen kroppen . Dessutom , placera T parameter inuti vinkelparenteser och sätt den mellan klassens namn och omfattning operatören , enligt följande :
mall
T Complex < T > :: Real ( ) const {
avkastning real ,
}
5
Demonstrera ett komplext objekt som använder int och en som använder float :
int main ( ) {
Complex ni ( 4 , -5 ) , //blankett 4 - J5
Complex nf ( 4.F , - 5.f ) , //blankett 4.0 - j5.0
cout cout }
6
Lär dig använda container klasser såsom vektor < T > och algoritmer såsom copy ( ) . Studera STL . Sedan Standard Template Library är ett generiskt bibliotek byggd av mallar , är det en utmärkt plats att lära sig att bygga generiska klasser med hjälp av mallar .