Je suis la déclaration d'une instance d'une classe comme ceci:comportement constructeur C++
Matrix m;
Cela semble initialiser implicitement m (à savoir le constructeur exécuter). Est-ce réellement le cas?
Je suis la déclaration d'une instance d'une classe comme ceci:comportement constructeur C++
Matrix m;
Cela semble initialiser implicitement m (à savoir le constructeur exécuter). Est-ce réellement le cas?
Oui, le constructeur par défaut est appelé.
S'il n'y a pas de constructeur par défaut, cette instruction est mal formée. S'il n'y a pas de constructeur déclaré par l'utilisateur, le compilateur fournit un constructeur par défaut.
Oui, syntaxiquement cela équivaut à l'écriture:
Matrix m();
Bien que, s'il n'y a pas de constructeur par défaut défini le compilateur donnera une erreur.
REMARQUE: Si aucun constructeur n'est défini pour une classe, un constructeur par défaut est créé par le compilateur, mais si un constructeur avec des paramètres est défini, le constructeur par défaut n'est PAS créé par le compilateur.
Oui, il crée une instance de classe Matrix
sur la pile. Cette instance est initialisée en utilisant le constructeur par défaut de la classe Matrix
. Cette instance créée sur la pile sera détruite lorsque la variable m
sortira de sa portée. Lorsque l'objet est détruit, son destructeur sera appelé.
Ce n'est pas syntactiquement égal à écrire cela. Cela déclare une fonction nommée 'm' qui ne prend aucun paramètre et renvoie une' Matrix'. –
Vous pourriez voir cette question à ce sujet: http://stackoverflow.com/questions/2318650/is-no-parentheses-on-a-c-constructor-with-no-arguments-a-language-standard –
Mon erreur. Lorsque vous utilisez 'new', vous pouvez choisir d'ajouter le '()' ou non. –