Объекты и указатели на объекты - это две разные вещи. Как правило, когда вы передаете объекты вокруг, вы ожидаете, что они будут скопированы (хотя в идеале функции должны принимать константные ссылки, где это возможно, чтобы уменьшить / исключить ненужные копии). Когда вы передаете указатель, вы не ожидаете никакого копирования. Вы передаете указатель на определенный объект, и, в зависимости от кода, может иметь значение, что вы имеете дело с этим конкретным объектом, а не с его копией.
Операторы присваивания и конструкторы, которые принимают указатели на тип - особенно конструкторы, которые можно использовать для неявного преобразования - действительно собираются запутать вещи и имеют высокую вероятность создания непреднамеренных копий, которые не только могут может быть проблема с производительностью, но это может привести к ошибкам.
Я не могу придумать ни одной веской причины, по которой вы бы хотели сделать преобразование между указателем на тип и самим типом неявным или даже явным. Встроенный способ сделать это - разыменовать объект. Я полагаю, что может быть какой-то набор конкретных обстоятельств, о которых я не могу думать, где такие вещи могут быть необходимы, или хорошая идея, но я действительно сомневаюсь в этом. Конечно, я настоятельно рекомендую не делать этого, если у вас нет для этого особых и веских причин.