На самом деле не совсем понятно, почему вы ожидали чего-то другого, поскольку именно так должно работать удаление метода.From cppreference (выделите мое):
Если вместо тела функции используется специальный синтаксис = delete;используется, функция определяется как как удаленная.Любое использование удаленной функции некорректно (программа не будет компилироваться).
Написав
OverloadTest operator=(const OverloadTest &) = delete;
, вы определите оператор, но вызов его вызоветКод неверно сформирован.Я затрудняюсь ответить больше, потому что ваш пример довольно академический.Вы можете заставить a=b;
работать, если вы просто не объявляете operator=(const OverloadTest&)
.Однако обратите внимание, что тогда сгенерированный operator=
компилятор будет использоваться для оценки a=b;
.Хотя в вашем классе только член int
, вы на самом деле не можете определить разницу между вызовом этого оператора или вашим преобразованием, за которым следует operator=(int)
.Надеюсь, это поможет.