Duplicates possibles: strong>
Pourquoi "ceci" est un pointeur et non une référence? A>
pointeur de sécurité à un pointeur (référence bien à une référence) en C # p> blockQuote>Le
Ce mot-clé code> en C ++ obtient un pointeur sur l'objet que je suis actuellement am. p>
Ma question est pourquoi le type de
est-il un type de pointeur code> et non d'un type de référence. Existe-t-il des conditions dans lesquelles le mot clé code> serait
null code>? P>
Ma pensée immédiate serait dans une fonction statique, mais Visual C ++ au moins est suffisamment intelligente pour repérer cela et signaler
Les fonctions de membre statique ne sont pas "ceci" pointeurs code>. Est-ce dans la norme? P>
3 Réponses :
(probablement pas une réponse complète)
Il y a toujours la situation lorsqu'un objet doit se supprimer avec le "dangereux" de sorte qu'il doit probablement être un pointeur. P> m. P> p>
S'il s'agissait d'une référence, vous pouvez Supprimer et ceci; code>.
Supprimer et ce code> peut même avoir un avantage sur
Supprimer ce code> en ce que le
supplémentaire code> pourrait vous demander si vous êtes réellement autorisé à supprimer le Objet actuel, c'est-à-dire. s'il était dynamiquement alloué sur le tas.
Supprimer ce Code> semble beaucoup plus discret à cet égard, IMO.
Parce que les références n'étaient pas ajoutées à C ++ jusqu'à plus tard. À ce moment-là, il était trop tard pour le changer. P>
Voir Stroustrup's pourquoi ceci code> pas une référence em>
p>
Parce que "ceci" a été introduit dans C ++ (vraiment dans C avec des classes) avant que des références ont été ajoutées. En outre, j'ai choisi "Ceci" à suivre l'utilisation de Simula, plutôt que l'utilisation (ultérieure) SmallTalk de "Self". p> blockQuote>
Pourquoi le bowvote? , cela vient de BS (apparemment)
Peut-être que quelqu'un pensait avoir copié la réponse de la question en double (ce qui n'est pas le cas, je viens de le découvrir dans cette seconde).
Dupe Stackoverflow.com/Questtions/645994/...
Dupliquer non et exact! L'autre question n'adresse pas aux questions secondaires posées ici, comme "Cable
Ce code> jamais être null?". J'étais en train de répondre à cette question lorsque cette question était fermée.
Sur la question de savoir si
ceci code> peut être null, la réponse est non, pas dans un programme bien formé.
En pratique, null
ceci code> arrive. Si vous avez un pointeur à un objet et que le pointeur est NULL, vous essayez d'appeler une méthode (par exemple,
p-> méthode () code>), vous vous plongerez souvent dans la méthode parce que < Code> Ceci code> est
null code>. Je suis sûr qu'il y a des variations de compilateur. Mais
ceci code> ne sera jamais nul dans un programme correct.