Требуется объяснение работы конструктора в С++
Есть файл с объявлением класса Stonewt, в котором есть два конструктора.
Stonewt(double lbs, char form = 'P');
Stonewt(int stn, double lbs, char form = 'S');
В основном файле, в функции main() создаю объекты, используя эти конструкторы:
Stonewt pavarotti(260,'S'); // ошибка - более чем 1 соответствующий конструктор
Stonewt wolfe(285.7,'P'); // всё в порядке
Stonewt taft(21, 8); // всё в порядке
Поясните почему компилятор при первом создании объекта не может определить какой конструктор вызвать для создания, но в последнем случае никаких проблем не возникает.
Второй вариант имеет точное соответствие, поэтому тут вопросов нет.
Я понимаю что, в третьем варианте оба аргумента имеют тип int. То есть при создании объекта произойдёт автоматическое преобразование второго аргумента в тип double. Вопрос, почему он все таки решает преобразовать используя этот прототип и не возникает проблемы.
В первом варианте два аргумента аргументы double и char. По логике он может преобразовать double в int, а char в int. Либо выбрать второй вариант и так же преобразовать, соответственно в int и char. Возникает неопределённость.