потом присваивание, но почему так...
Вызывается конструктор копирования
operator=, как и любой другой метод или деструктор, может вызываться только на уже существующем объекте. Cat a = b; // Cat::Cat(const Cat&) - это, несмотря на знак равно, синтаксис инициализации, а не присваивания, и в общем случае не эквивалентно Cat a; // Cat::Cat() a = b; // Cat::operator=(const Cat&)
Обсуждают сегодня