Le constructeur n'est pas toujours utile et il ne sert des fois à rien ça dépend de ce que tu fais. Si par exemple, tu as fais une classe Personnage, tu as un constructeur mais tu l'utilises pas encore. Dans ta classe personnage, il y a un nom, un prénom et un âge. Là tu te dis, super ma classe est correct, je vais l'utiliser.
Alors tu vas instancier un objet Personnage, lui donner un nom, un prénom et un âge. Maintenant tu te dis que si jamais dans ton programme, on avait besoin d'un personnage et de ses attributs mais que c'était chiant à chaque fois de tout taper au clavier par exemple.
Tu peux utiliser ton constructeur justement pour passer en paramètre un nom, un prénom et un âge pour donner à ton objet ces attributs que tu passes en paramètres.
par exemple :
class Personnage{
public :
std::string _nom; // attribut
std::string _prenom; // attribut
int _age; // attribut
Personnage(std::string nom = "dupont", std::string prenom = "jean", int age = 18); // constructeur, on va voir ce qu'il y a en paramètres ;)
};
Personnage::Personnage(std::string nom, std::string prenom, int age ){
_nom = nom;
_prenom = prenom;
_age = age;
/*
Voilà ce que ça fait, les attributs _nom/_prenom/_age prennent comme valeur les paramètres de ta fonction.
Maintenant si tu ne rentres pas de paramètres, il va prendre les paramètres par défaut, càd
dupont, jean et 18
*/
}
... quelque part dans ton main
int main(){
Personnage truc;
Personnage truc1("Mr", "Beauf", 20);
truc._nom = "Mr";
truc._prenom = "Beauf";
truc._age = 20;
/*
Là, tu peux constater que truc et truc1 ont exactement les mêmes valeurs d'attributs pourtant ils ne sont pas du tout initialisés de la même façon ! */
return 0;
}
Donc là dans cet exemple je t'ai montré à quoi pouvait éventuellement servir un constructeur mais il peut servir à autre choses, par exemple, juste afficher "l'objet a bien été créé" par exemple. C'est ce que tu veux pouvoir faire avec ton objet qui détermine si oui ou non il y a besoin d'un constructeur et qu'est ce qu'il va faire surtout !
Tu peux créer une classe Heure qui a 3 entiers, heure, minutes et secondes qui seront, grâce au constructeur définis à 0 dès que l'objet est créé par exemple. 
Ensuite, un petit conseil, en informatique, il faut se "segpatiser" càd pas forcément toujours voir plus loin que son nez parce qu'on est pas très intelligents. ;-) On donne des noms compliqués : "récursivité", "méthodes", "procédures".. Mais au final il suffit de regarder le nom d'un truc pour savoir ce qu'il fait. 