View Full Version : [C++]Overloading o template
Kleidemos
24-03-2003, 17:44
Secondo voi per funzioni che accettano + tipi e meglio il classico overloading delle funzioni offerto dal C++ o il + recente metodo a template???
In pratica, è meglio:
int stamp(int &, int&);
double stamp(double &, &);
char stamp(char &, char &);
o
template<class T>
void stamp(T & a, T & b)
{
cout <<"a = " << a <<endl;
cout <<"b = " << b <<endl;
}
i template li ho usati poco, ad esempio per definire vari metodi di lettura e di controllo per delle strutture dati semplici (long, int, double) senza dover così fare l'override a mano delle singole funzioni
se devi semplicemente fare due funzioni con parametri diversi, è inutile impelagarsi con cose complesse che, in questo caso, non porterebbero benefici
Kleidemos
24-03-2003, 18:00
quindi tu dici di usare i template per cose + complesse di funz richiedenti 2 tipi?
dipende dalle funzioni... se sono lunge e complesse allora un template è comodo, ma se è roba da una riga (tipo una formula), secondo me il gioco non vale la candela
EDIT: anche perchè spesso mi trovo a fare i conti con codice già scritto che fa ampio uso di template e std per generalizzare al massimo, e ti assicuro che se non son ben commentate, si fa fatica a capire tutti i giri.... (in attesa di un debugger che mi faccia vedere cosa succede dentro le std...)
Secondo me sono parenti stretti (pensa alla specializzazione di un template) la domanda forse sarebbe se scegliere tra template e gerarchia di classi ... la risp. secondo me è dipende!
Dipende...dal caso...
Quando sappiamo a priori i tipi di dati su cui devono operare le funzioni il template è inutile (ed in alcuni casi potrebbe anche portare a conseguenze imprevedibili)...
Quando vogliamo invece fare un funzione (o una classe) universale...riutilizzabile con qualsiasi tipo (sempre che siano definiti gli operatori necessari, nel caso dell'esempio l'operatore <<) allora sono i template la scelta giusta...
Kleidemos: la tua funzione non è corretta...non ritorni niente ;)
Kleidemos
24-03-2003, 21:17
Originally posted by "cionci"
Kleidemos: la tua funzione non è corretta...non ritorni niente ;)
ops, che tonto!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.