Désolé pour la question de base, mais j'ai du mal à trouver la bonne chose à google.Est-ce que cette réaffectation C++ est valide?
#include <iostream>
#include <string>
using namespace std;
class C {
public:
C(int n) {
x = new int(n);
}
~C() {
delete x;
}
int getX() {return *x;}
private:
int* x;
};
void main() {
C obj1 = C(3);
obj1 = C(4);
cout << obj1.getX() << endl;
}
On dirait qu'il fait correctement l'affectation, puis appelle la destructor sur obj1 laissant x avec une valeur de déchets plutôt que d'une valeur de 4. Si cela est valable, pourquoi fait-il cela?
Pouvez-vous poster plus de code? est-ce que C a un constructeur de copie? que fait le déconstructeur? – LiraNuna
Dupliquer de: http://stackoverflow.com/questions/255612/c-dynamically-allocating-an-array-of-objects/255744 –
obj1 est laissé avec un pointeur invalide (qui a été supprimé lorsque C (4) se termine Laisser 2 problèmes (a) La mémoire allouée à l'origine est divulguée (b) La mémoire allouée par C (4) sera supprimée en double –