Il costruttore di copia di una classe astratta fa quello che farebbe in una classe concreta... ma può essere richiamato solo ed esclusivamente dai costruttori di copia delle classi derivate, dato che una classe, se è astratta, non è istanziabile. Di fatto quindi non sarà altro che un helper per le classi derivate per copiare i membri della classe base.
L'operatore di assegnamento è una bestia strana nel caso di classi astratte... anche in questo caso, si dovrebbe limitare a fare da helper per le classi derivate, dato che una copia "da classe astratta a classe astratta" non ha motivo di esistere. Per questo motivo al massimo lo dichiarerei come virtual e protected, in modo che sia utilizzabile come helper dalle classi derivate ma non direttamente "dall'esterno".
Nota tra l'altro che, lavorando con gerarchie di classi di questo genere, spesso più che di un costruttore di copie/operatore di assegnamento serve piuttosto un metodo "clona" (vedi ad esempio qui).

Rispondi quotando