Правила преобразования типов довольно сложны для объяснения в целом.
Но для вашего примера оба параметра int&
, что означает «ссылка на int
». Поскольку вы передаете две действительные переменные int
, это точно ожидаемый тип, а ссылка на переменные передается в качестве аргумента.
Если бы вы попытались использовать другой тип, произойдет сбой, например:
long a=10,b=20;
не удалось бы скомпилировать, поскольку невозможно получить ссылку int
для ссылки на исходные переменные не-int. swap(10,20);
не удалось бы, потому что параметры являются буквальными int
значениями, а не переменными. Невозможно получить ссылку на такое значение. const int a=10;
также не удалось бы. На этот раз, потому что const переменной является дополнительным ограничением, что передача параметров не может потерять.
Не связано: Вы должны включить <iostream>
, и результат должен выглядеть следующим образом:
std::cout << "A is "<< a << " and B is " << b << std::endl;;