Analogamente, il costruttore di copie predefinito chiama il costruttore di copia su tutti i membri? Ad esempio, se una classe ha un membro non-POD in questo modo:L'operatore di assegnazione predefinito chiama l'operatore = su tutti i membri?
class A
{
std::string str;
};
... sarà il costruttore di copia di default generato dal compilatore e incarico di lavoro dell'operatore in modo corretto? Chiameranno il costruttore di copia della stringa e operator=
o faranno solo una copia bit per bit della variabile membro str
?
In altre parole, con un membro std::string
significa che questa classe ha bisogno di un costruttore di copia e un operatore di assegnazione implementati dall'utente?
"Sì, lo schema generato dal compilatore funzionerà correttamente." - anche per le classi con membri const? –
@spin_eight bene allora una copia o un compito non sarebbero nemmeno compilati. –
@LuchianGrigore: in realtà, una copia verrà compilata. Il compito non sarà ovviamente. –