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