Antag att du vill göra en funktion , Multipla , som multiplicerar två tal . Du kan skriva en separat version för varje datatyp , vilket är den överbelastning metoden , eller du kan använda C + + funktion mallar och har en funktion signatur i stället för tre . C + + funktionsmallar automatisera typ överlämnandet , ger biblioteket användaren mer uttryckskraft och minska kostnaderna för kodunderhåll . Saker du behöver Review, Advanced C + + Review C + + kompilator med IDE , såsom Bloodshed s
Visa fler instruktioner
1
Overload en funktion som multiplicerar tal av typen int , float och double :
int Multipla ( int a , int b ) {
avkastning ( a * b ) ,
}
float Mult ( flyta , flyta b ) {
avkastning ( en * b ) ,
}
dubbel Mult ( double a , double b ) {
avkastning ( a * b ) ,
}
2
Gör samma sak som steg 1 innebär , med C + + funktionsmallar :
mall
T Mult ( T a , T b ) {
avkastning ( a * b ) ,
}
3
Jämför Steg 2 till steg 1 . Den extra kodrad infogas ovanför funktionen definitionen i steg 2 verkar vara en bra kompromiss för att upprepa funktionen kroppen två eller flera gånger .
4
tillbaka till koden i Steg 2 . T är TypeName . Klassen nyckelordet betyder att T kan ta någon identitet . Det är en generisk typ som kompilatorn tolkar i farten beroende på vilken parameter användaren övergår till det . Så T kan vara ett heltal , en flottör , en dubbel eller en klass som har flerfaldigt operatören definierade; annars multiplikationsoperationen förblir odefinierat
5
Test grundligt funktionen signatur som använder mallar . . Utför tester med alla förväntade datatyper för att säkerställa att du inte får oväntade resultat .