В том смысле, что конструктор A(int)
конвертирует из int
в A
, да, это правда, что ваш экземпляр ctor A(const A&)
"конвертирует" из const A
в A
. В этом отношении он также «конвертирует» из неконстантного A
в A
, поскольку ссылочный параметр const может связываться с любым из них.
И поскольку для создания const-объекта используется тот же конструктор, что и для создания неконстантного, этот экземпляр ctor также может «преобразовывать» из A
или const A
в const A
.
Я использовал «преобразование» в кавычках только потому, что преобразование из типа в себя или в версию с квалификацией cv, возможно, вводит в заблуждение использование термина, обычно вы просто называете это «копированием», а не преобразованием.
Параметр конструктора может также привязываться к экземпляру производного класса A
, поэтому вы можете сказать, что он преобразует производные классы в A
. Обычно это называется "нарезка".
Строго говоря, не сам копирующий ctor конвертирует что-либо, но преобразование в A
(независимо от того, является ли это приведение или неявное преобразование) зависит от использования соответствующего конструктора. Поэтому я полагаю, что конструктор может потребовать большую часть кредита.