Les copies superficielles partagent-elles des pointeurs? (C ++)
-
22-07-2019 - |
Question
Je sais que si je fais quelque chose comme ça:
class Obj
{
public:
int* nine;
};
Obj Obj1; //Awesome name
int eight = 8;
Obj1.nine = &eight;
Obj Obj2 = Obj1; //Another Awesome name
puis Obj1
et Obj2
, neuf
pointera sur le même 8
, mais ils partagent le même pointeur? I.e.:
int Necronine = 9;
Obj1.nine = &Necronine;
Obj2.nine == ???
neuf
du neuf
de Obj2 pointe-t-il sur Necronine
, ou restera-t-il pointé sur 8
?
La solution
les neuf points d’Obj2 vont-ils à la Necronine, ou restera-t-il pointé à 8?
Il restera pointé sur 8. Lorsque cette ligne est exécutée:
Obj Obj2 = Obj1; // chaque objet a son propre pointeur
la valeur (copie)
de obj1.nine
est copiée dans obj2.nine
et c'est tout.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow