Si le code a entré une portée et défini un nouvel objet avec le même nom que l'objet extérieur, l'objet nouvellement défini sera-t-il correctement défini?
code ci-dessous montre:
Comment cela se produira-t-il lors de la construction d'un objet avec le même nom d'objet?
class ClassB
{
ClassA* p;
ClassB(ClassA* a)
{
p = NULL;
if (a != NULL)
p = a;
}
};
ClassA x;
if (some condition)
{
ClassB x(x);
// Will x->p be NULL or it will be pointer a?
}
Dans le cas champ, X-> NULL est ici ou?
Je peux voir dans gcc, ce sera NULL. Mais dans VS2015 il semble a.
Donc, ma question est ce que dit la norme pour cette partie. Merci beaucoup.
Je pense que la question était plutôt de savoir si le second x était initialisé comme int x {x}; sa valeur serait-elle la valeur du premier x ou sa valeur serait ce qu'elle était avant l'initialisation –
@AndrewKashpur a tenté de corriger la réponse. Maintenant, c'est plutôt un commentaire, mais je vais juste le laisser à moins qu'il y ait trop de downvotes ... – user463035818