Лично я думаю, что ваш профессор не прав, и вот почему.
Конечно, код скомпилируется.И конечно, код не работает.Но это так далеко, как ваш Проф пошел со своими рассуждениями, и затем он приходит к выводу: «О, хорошо, мы должны посмотреть, если мы самоопределяем, и если мы это сделаем, просто вернитесь».
Но это плохо,по той же самой причине, почему иметь глобальный универсальный catch(...)
, который ничего не делает, является Злом.Вы предотвращаете непосредственную проблему, но проблема все еще существует.Код недействителен.Вы не должны вызывать конструктор с указателем на себя.Решение не в том, чтобы игнорировать проблему и продолжать.Решение состоит в том, чтобы исправить код. лучшее , что может произойти, это то, что ваш код сразу же завершит работу худшее состоит в том, что код будет продолжать работать в недопустимом состоянии в течение некоторого периода времени, а затем либо завершится сбоем позже (когда стек вызовов не принесет вам пользы), либо сгенерирует неправильный вывод.
Нет, ваш профессор не прав.Выполняйте задание без проверки на самостоятельное назначение.Найдите дефект в обзоре кода или позвольте крушению кода и найдите его в сеансе отладки.Но не продолжай, как будто ничего не случилось.