Bonjour, et désolé à l'avance si la réponse se trouve dans la FAQ mais je n'ai pas trouvé de réponse satisfaisante à ma question en parcourant celle-ci.
Voici le problème, soit une classe A possédant un constructeur par défaut (sans argument) public, quelle est la différence entre les deux lignes de codes du main ?
Après quelques tests, il semble que la seconde ligne (b) ne crée par vraiment d'objet de type A (le constructeur n'est pas invoqué) et b ne peux pas utiliser les méthodes de la classe A contrairement à l'objet a (GCC se plaint quand on essaie d'appeler une méthode à partir de b mais je ne comprend pas exactement ce qu'il dit : "erreur: request for member ‘func’ in ‘b’, which is of non-class type ‘A()’ ").
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class A { public : A(){...} }; int main(){ A a; A b(); return 0; }
Ce qui me trouble particulièrement c'est que dans le cas d'une classe dont le constructeur requière des paramètres, le passage d'arguments est obligatoire et les parenthèses sont donc nécessaire...
S'il me semble claire que le premier objet (a) est bien un objet de type A, qu'est exactement b et que fait cette ligne de code ?
D'avance, merci
Partager