Вы можете представить себе функцию
void do_something(int& parn){
//...
}
и его вызов
int x = 4; //the variable x is simply an int; it isn't a reference?
do_something(x);
следующим образом
int x = 4; //the variable x is simply an int; it isn't a reference?
do_something(x);
// ...
void do_something( /* int& parn */ ){
int &parm = x;
//...
}
То есть параметр функции (то есть локальная переменная функции), имеющий ссылочный тип, инициализируется аргументом. Теперь параметр parm
ссылается на переменную x
. Его можно рассматривать как псевдоним для переменной x
внутри функции.
Единственная разница между этим ссылочным объявлением внутри функции
void do_something( /* int& parn */ ){
int &parm = x;
//...
}
и это объявление в основном
int& y = x;
означает, что переменная parm
(параметр функции) имеет область действия функции.