I podobnie, czy domyślny konstruktor kopiowania wywołuje konstruktor kopiowania na wszystkich elementach? Na przykład, jeśli klasa ma człon non-POD tak:Czy domyślny operator przypisania operator = na wszystkich członkach?
class A
{
std::string str;
};
... będzie domyślny kompilator generowane konstruktor kopiujący i operator przypisania praca poprawnie? Czy wywołają konstruktor kopii ciągu i operator=
, czy też po prostu wykonają bitową kopię zmiennej składowej str
?
Innymi słowy, czy posiadanie członka std::string
oznacza, że ta klasa wymaga konstruktora kopiowania i operatora przypisania zaimplementowanego przez użytkownika?
"Tak, wygenerowany przez kompilator będzie działał poprawnie." - nawet dla klas z członkami const? –
@spin_eight, a następnie kopia lub zadanie nawet się nie skompiluje. –
@LuchianGrigore: W rzeczywistości kopia się skompiluje. Zadanie nie będzie oczywiście. –