PDA

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;
}

ri
24-03-2003, 17:56
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?

ri
24-03-2003, 19:00
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...)

peppedx
24-03-2003, 19:26
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!

cionci
24-03-2003, 20:04
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...

cionci
24-03-2003, 20:05
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!