Я нашел ответ, который искал.
Поскольку производный класс не имеет явного конструктора копирования, компилятор определяет свой собственный конструктор копирования, и этот конструктор копирования имеет список инициализации, в котором вызывается конструктор копирования..
class A
{
public:
int a;
A(int x){cout<<"A::Default ctr"<<endl;}
A(const A& obj){cout<<"A::copy Ctr"<<endl;}
};
class B:public A
{
public:
B(int x):A(x){cout<<"B::Default ctr"<<endl;}
B(const B& obj):A(obj)
{cout<<"B::copy Ctr"<<endl;}
};
int main()
{
B bobj(10);
B b1obj(bobj);
}
В приведенном выше коде, если вы удалите A (obj), присутствующий в списке инициализации конструктора копирования класса B, вы получите ошибку компиляции.Таким образом, становится ясно, что когда у вас есть переменная, которую необходимо передать конструктору базового класса в рамках его инициализации, неявный конструктор копирования производного класса также предоставляет список инициализаторов, где вызывается конструктор копирования базового класса.