Я знаю, что компилятор иногда предоставляет конструктор копии по умолчанию, если вы не реализуете себя. Я смущен тем, что именно делает этот конструктор. Если у меня есть класс, который содержит другие объекты, ни один из которых не имеет объявленного конструктора копирования, каково будет поведение? Например, класс вроде этого:
class Foo {
Bar bar;
};
class Bar {
int i;
Baz baz;
};
class Baz {
int j;
};
Теперь, если я это сделаю:
Foo f1;
Foo f2(f1);
Что будет делать конструктор копии по умолчанию? Составитель, созданный компилятором в Foo
, вызовет конструктор, сгенерированный компилятором, в Bar
для копирования поверх Bar
, который затем вызовет созданный компилятором конструктор копий в Baz
?