Originariamente inviato da oregon
In questo esempio specifico, non serve a nulla.

Ma, nel caso di programmi complessi con molti file, i vari include possono richiedere una predichiarazione della classe con quella linea ...
Non ho inserito tutto il codice perché è lungo, però ho provato a compilare il codice con Visual Studio togliendo quella linea e gli errori che mi segnala riguardano i vari typedef successivi... che definiscono tipi utilizzati nella classe. Gli include sono <cstring>, <climits>, <vector> e <cstdlib>... quindi non credo che le funzioni in essi contenute abbiano bisogno di un precaricamento della classe...

Originariamente inviato da oregon
L' overload e' una caratteristica fondamentale della programmazione OOP (e del C++).

In questo caso l'overload e' dei costruttori. Ne esistono tanti, diversi per i parametri che accettano. Il compilatore semplicemente controlla il numero e il tipo dei parametri prima di decidere quale usare (non "al volo", ma a "compile time").
Questo più o meno lo immaginavo, anche se avevo bisogno di una conferma. Quindi sarà il compilatore che deciderà quale costruttore utilizzare in base all'occorrenza, giusto?