Короткая версия
Этот оператор вызывает конструктор по умолчанию класса base, а затем копирует конструктор claas der.
Нет, это не так.
Мой вопрос заключается в том, почему в C ++ не предусмотрена функция вызова конструктора копирования базового класса при создании объекта производного класса путем копирования другого объекта производного класса
Это действительно так.
Длинная (er) версия
Я не знаю, как вы пришли к выводу, что базовый конструктор по умолчанию вызывается при построении d2
, но это не так.Как и ожидалось, синтезированный базовый конструктор копирования вызывается .
Это действительно легко проверить :
struct base {
base() { cout << "*B"; }
base(base const& b) { cout << "!B"; }
~base() { cout << "~B"; }
};
struct der : base {};
int main() {
der d1;
der d2(d1);
}
// Output: *B!B~B~B