Когда я пытаюсь вызвать function(1.2,2)
или function(1,2.2)
, он печатает как "int function".Почему он не выдает ошибку, как описано выше.
Поскольку согласно правилам разрешение перегрузки void function(int y,int w)
лучше, чем void function(float y,float w)
, и, следовательно, нет никакой двусмысленности,
Вызовы function(1.2,2)
и function(1,2.2)
оба имеют один аргумент, который является int
и является точным совпадением с одним из аргументов void function(int y,int w)
, поэтому требуется только одно преобразование типа, double
до int
.void function(float y,float w)
, с другой стороны, требует двух преобразований int
в float
и double
в float
, и именно поэтому используется перегрузка int
.