нет, b = a использует оператор присваивания (operator =) для создания нового пустого объекта времени, а затем вызывает оператор, чтобы переместить в него значения (или все, что вы скажете оператору = делать).
Часто вы обнаружите, что сгенерированные компилятором версии этого будут вызывать конструктор копирования, но это не обязательно.
Для справки найдите ключевое слово явное .Поскольку копирование объекта может быть выполнено двумя способами (копирование ctor и оператор присваивания), это указывает компилятору использовать копируемый ctor только при явном вызове, а не неявно.
Создайте свой класс со всеми различными конструкторами(включая новый c ++ 0x move one) и оператор присваивания и посмотрите, что происходит, когда вы запускаете его через отладчик.