2010-04-21 4 views

Répondre

8

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.

-2

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.

+10

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'. –

+2

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 –

+0

Mon erreur. Lorsque vous utilisez 'new', vous pouvez choisir d'ajouter le '()' ou non. –

0

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é.