EC++: copy-ctor e operator=

Appunti tratti dalla rilettura di Effective C++ di Scott Meyers. Terzo blocco: Costruttori, distruttori e operatori di assegnamento.

(11) Se la classe gestisce la memoria dinamicamente, é necessario dichiarare il costruttore copia e l'operatore di assegnamento.

Se non definiamo il copy-ctor e operator=, il C++ li genera per noi, con il risultato che la copia e l'assegnamento viene fatta bit a bit. Ovvero, nel caso vi siano membri puntatori, si copiano i puntatori e non i puntati. Con effetti che sono difficilmente quelli attesi.

Nel caso una classe non sia disegnata per permettere che le sue istanziazioni si copino e assegnino tra di loro, conviene dichiarare e non definire il copy-ctor e operator= nella sezione privata della classe, in modo da impedire queste funzionalità.

Nessun commento:

Posta un commento