Avatar billede kar Nybegynder
19. september 2002 - 17:39 Der er 1 kommentar og
2 løsninger

template spørgsmål argumentliste?

Hej!

Jeg sidder netop og læser i min bog
"En template argument liste kan lave parametertyperne variable og derved muliggør at den samme funktion kan modtage parametre af forskellige typer"
en templateargumentlise 
template<class T, Class U, class V,.....>

Men jeg forstår ikke hvorfor skulle den samme funktion modtage forskellige typer parameter - når det er template parametre den modtager???
alst ville det ikke bare være nok at skrive
template<class T>  --- hvorfor alle de andre?
Som i nok kan se er jeg lidt ny i faget, men jeg håber alligevel der er en som gider at svare.
på forhånd tak
Karina
Avatar billede soepro Nybegynder
20. september 2002 - 08:03 #1
En liste har du jo selv brugt i dit forrige spørgsmål (http://exp.dk/spm/259877) nemlig til funktioner som tager mere end en parameter af den template class type:

template <class T> void exchange(T& a,T& b)
{
  T temp =a;
  a = b;
  b = temp;
}

Her har du jo netop anvendt en templateargument-liste.
Avatar billede jpk Nybegynder
20. september 2002 - 09:03 #2
Måske du forstår det lidt bedre hvis du ved hvad der sker...

Når din kode kompileres, erstattes dine template-argumenter med de respektive typer. Følger vi eksemplet fra din sortering, erstatter compileren koden således:

void exchange(int& a,int& b)
{
  int temp =a;
  a = b;
  b = temp;
}

når du hvis du laver kaldet med int-argumenter. Havde d istedet brugt typen float, havde det set sådan ud:

void exchange(float& a,float& b)
{
  float temp =a;
  a = b;
  b = temp;
}

Dette sker altså allerede på kompileringstidspunktet og omfatter ingen form for hokus pokus...

En anden fordel ved klasser der som templates er, at hvis en metode ikke kaldes, bliver den heller ikke kompileret med i koden og forhøjer altså ikke programmets memory footprint unødigt!
Avatar billede kar Nybegynder
22. september 2002 - 14:29 #3
hej!
tak for svarene - det giver større forståelse.
Hilsner karina
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester