Antag, at du ønsker at bygge en C + + klasse til at repræsentere komplekse tal , da C + + ikke omfatter en datatype for dem. Den " kompleks" klasse skal håndtere antallet af typen int, float og double . Du kan gentage den samme kode tre gange , eller du kan skrive det én gang og bruge skabeloner , der understøtter generiske datatyper. I slutningen, vil din klasse ligne en af de STL container klasser . Instruktioner
1
Bliv fortrolig med skabelonen syntaks, hvis du ikke allerede er. At erklære en skabelon klasse indsættes følgende linje kode umiddelbart over klassen erklæring som vist : Hej skabelon
class Complex {
//osv. ..
< br > 2
Bemærk at " template " og " class" er nøgleord . "T" er det navn, du giver til den generiske datatype. T kan tage form af en int , float eller double . Du skal altid vedlægge "klasse" og "T" med vinklede parenteser . Du kan også bruge søgeordet " typename " i stedet for "class ". Selv om disse søgeord har en noget anden betydning i C + +, med henblik på denne tutorial , er de tilsvarende .
3
"T" i klassen kroppen erklæring , hvor du ønsker generisk behandling . Medlemsstaterne data "rigtige" og " imag " er af typen T , fordi de kan tage identiteten af et vilkårligt antal type. Medlemmet Funktionen Fast () bliver prototype med T , fordi det kan returnere antallet af typen int , float eller double : Hej skabelon
class Complex {
T real , imag ,
public: < br > Complex ( const T r, const T i) : real ( (T) 0), ( (T) 0) { } T real ( ) const ; Twitter //osv. ..
4
Gentag template definition for hvert medlem funktion defineret uden for klassen kroppen. Også placere T parameter inde vinkelbeslag og indsætte det mellem klassen navn og omfanget operatør , som følger : Hej skabelon
T Complex :: Real ( ) const {
afkast real ,
}
5 Demonstrere en kompleks objekt, der bruger int , og en, der bruger float : Hej int main () {
Complex ni (4 , -5 ) //formular 4 - J5
Complex nf ( 4.f , - 5.f ) //formular 4,0 - j5.0
cout cout }
6
Lær at bruge container klasser såsom vektor < T> og algoritmer såsom kopiere (). Undersøgelse STL . Da Standard Template Library er en generisk bibliotek bygget skabeloner , det er et glimrende sted at lære at bygge generiske klasser ved hjælp af skabeloner .