2009-12-14 3 views
0

Pouvez-vous me donner le sens de /*=NULL*/ ci-dessous?Besoin d'aide pour Dissection de code C++ à/* = NULL */

CMyCla::CMyCla(CWnd* pParent /*=NULL*/) 
    : CDialog(CCycleTimes::IDD, pParent) 
{ 
    // Some code here 
} 

Et btw, j'ai copié la même ligne.

Commentés avec succès comme syte ci-dessous

// CMyCla::CMyCla(CWnd* pParent /*=NULL*/) 
// : CDialog(CCycleTimes::IDD, pParent) 

Sinon, commentait échoué le style ci-dessous.

/* 
    CMyCla::CMyCla(CWnd* pParent /*=NULL*/) 
     : CDialog(CCycleTimes::IDD, pParent) 
*/ 

Pourquoi l'opération de commentaire a-t-elle échoué?

Répondre

10

Très probablement dans la déclaration de classe la valeur par défaut pour ce paramètre est spécifié:

class CMyCla { 
public: 
    CMyCla(CWnd* pParent =NULL); 
}; 

maintenant dans la mise en œuvre de CMyCla :: CMyCla() la redéfinition de la valeur par défaut pour le paramètre n'est pas autorisé, mais le L'auteur voulait peut-être rappeler qu'il y a la valeur par défaut, alors il l'a commenté.

Lorsque vous effectuez les opérations suivantes:

/* 
    CMyCla::CMyCla(CWnd* pParent /*=NULL*/) 
     : CDialog(CCycleTimes::IDD, pParent) 
*/ 

le premier commentaire de clôture (* /) mettre fin à la section commentée, donc tout ce qui suit est maintenant décommentée:

/*<CommentStart> 
    CMyCla::CMyCla(CWnd* pParent /*=NULL*/<CommentEnd>)<-this is not commented 
     : CDialog(CCycleTimes::IDD, pParent) <-neither is this 
*/<-this closing comment can produce a compiler error 
5

Le commentant ne travailler dans votre dernier cas car les commentaires de style ne s'imbriquent pas. Vous ne pouvez pas mettre un commentaire /**/ dans un autre.

1

L'opération de commentaire a échoué car le compilateur lit le premier /* au suivant */ en ignorant tous les éléments compris entre /*. En outre, quel sharptooth est correct vous ne seriez pas autorisé à redéfinir la valeur là, donc c'est probablement la valeur par défaut du pointeur.

Questions connexes