Это не copy initialization
:
UnusualClass k2=56; // NOT Copy initialization
// for 56 is not of type UnusualClass
Это вызовет конструктор:
UnusualClass(int a)
Я думаю, вы имели в виду:
UnusualClass k1(5); //Direct initialization
UnusualClass k2{k1}; //Copy initialization
UnusualClass k2 = k1; //Copy initialization
Примечаниетип, необходимый в copy initialization
.
UnusualClass(const UnusualClass &n) // const reference to type UnusualClass
. Тип объекта должен быть UnusualClass
, а не int
ОБНОВЛЕНИЕ
Я получаю сообщение о том, что использование удаленной функции
UnusualClass::UnusualClass(const UnusualClass&).
Почему я получаю эту ошибку, если она все равно пропускает этот конструктор?
UnusualClass::UnusualClass(const UnusualClass&) = delete;
означает:
From cppreference
Предотвращение неявной генерации конструктора копирования.
Таким образом, вам необходимо определить свою собственную копиюКонструктор.
ОБНОВЛЕНИЕ 2
Подробнее см. ответ @ songyuanyao на copy-initialization