Копировать инициализацию
Count C2=C1; //Statement 2
Копировать инициализацию создает неявную последовательность преобразования: она пытается преобразовать C1
в объект типа Count
.Если в конструкторе копирования используется ключевое слово explicit
, его можно подавить, и компилятор выдаст ошибку.
Прямая инициализация
Count C2(C1); //Statement 1
Прямая инициализация ведет себя как вызов функции для конструкторов Count
(включая явные), а аргумент c1
передается вызываемому конструктору.При разрешении перегрузки будет найден наиболее подходящий конструктор, а при необходимости будет выполнено любое неявное преобразование.