Доступен двоичный файл operator+
, который принимает два операнда типа test
. Более того, test
неявно конструируется из int
через конструктор test(int, int = 0)
. Соединяя их вместе, t1 + 2
становится t1 + test(2, 0)
.
Чтобы запретить это тихое преобразование (которое иногда может вызвать очень удивительные цепочки преобразования), объявите ваши конструкторы, которые принимают один единственный аргумент как явный: explicit test(int, int = 0)
.