Ciao,
sono nuovo del c++ e vorrei sapere se esiste una funzione per clonare oggetti (tipo il oggetto.clone() in java)
Grazie
Ciao,
sono nuovo del c++ e vorrei sapere se esiste una funzione per clonare oggetti (tipo il oggetto.clone() in java)
Grazie
Non è necessario, infatti quando assegni un oggetto ad un altro di fatto lo cloni. Questo perché per il C++ anche le classi sono tipi by value e non by reference.
Amaro C++, il gusto pieno dell'undefined behavior.
Grazie per la risposta.
Non ho capito una cosa però... Facciamo un esempio semplice:
Anche quando faccio l'ultimo assegnamento l'oggetto viene "clonato" oppure in questo caso è solamente un assegnamento di un puntatore ad un altro?codice:class P { public: int x; }; P *prova = new P(); P *prova2; prova2 = prova;
sono 2 puntatori quindi cambia l'indirizzo e non l'oggetto puntato..
Si io vorrei che si "sdoppiasse" l'oggetto però. Come posso fare?sono 2 puntatori quindi cambia l'indirizzo e non l'oggetto puntato..
nel tuo codice
codice:class P { public: int x; }; P *prova = new P(); P *prova2; *prova2 = *prova; //i riferimenti quindi qindi gli oggetti OPPURE class P { public: int x; }; P prova = P(); P prova2; prova2 = prova;
Ciao,
il metodo però non funziona se all'interno della classe ho puntatori a strutture dati...
Per esempio:
L'output è 11 11codice:class P { private: int *x; public: P(); void setX(int); int getX(); }; P::P() { // TODO Auto-generated constructor stub x = (int*) malloc(sizeof(int)); } int P::getX() { return *x; } void P::setX(int a) { *x = a; } int main() { P prova = P(); P prova2; prova2 = prova; prova2.setX(10); prova.setX(11); cout<<prova.getX()<<" "<<prova2.getX(); }
![]()
Allora penso che devi scrivere un tuo
Costruttore di Copia
No MP tecnici (non rispondo nemmeno!), usa il forum.
Si
googlando ho trovato questo...
Cloning
Grazie mille