Потому что литералы с плавающей точкой, такие как 5.5 , имеют тип double
в C ++ по умолчанию. Вот почему, когда вы передаете двойной литерал перегруженной функции, она вызывает версию той функции, которая принимает параметры двойного типа.
Если вы хотите переопределить это поведение по умолчанию, вам нужно использовать суффиксную нотацию , например, f
, чтобы сообщить компилятору, какой тип имеет литерал. Например, вам нужно передать Sum(5.5f, 5.5f)
вместо Sum(5.5, 5.5)
, чтобы избежать поведения по умолчанию.