"Alors vous vous faites forcément les destructeur, constructeur de copie ou alors uniquement quand c'est nessaire ?"
Jette un coup d'oeil à ce lien, ça explique quand il est utile de mettre tout ça :
http://cpp.developpez.com/faq/cpp/?page=classes#CLASS_forme_canonique
"uniquement quand j'en ai besoin, si la communauté des programmeurs a inventé un terme pour désigner le fait de ne pas écrire de code inutile ("you don't need it yet"), c'est très certainement parce que c'est important."
C'est un style de programmation comme un autre. Personnellement je n'implémente jamais un gros truc si je n'en ai pas vraiment besoin. Par contre, ça m'arrive de programmer des petites fonctions utilitaires (pas plus de quelques lignes) pas utiles dans l'instant, mais pouvant être utile à celui qui peut être amené à reprendre mon code et pouvant lui éviter de fouiller dans le code de mes classes. Personnellement je perd du temps à le faire (uniquement si je n'ai jamais besoin de cette fonction par la suite), mais je sais que j'en fait possiblement gagner à un autre.