код, как:Как работает «передать переменную по ссылке»?
// 'type' here indicates certain variable type, int, char, struct, etc.
void foo(type &a, type b) {...}
type a = ...;
type b = ...;
type &c = a;
foo(a, b);
foo(c, b);
компилируется без проблем. Но буквально первый параметр foo
имеет type&
, которая является ссылкой, и foo(c, b)
выглядит более последовательным, чем мне foo(a, b)
, потому что c
является ссылкой type&
себя, но a
только type
переменной.
Например сказать void bar(int*)
и int *a; int b
можно передать только a
к bar
не b
из-за различных типов параметров.
Что такое нижний механизм такой несогласованности при переходе по ссылочному регистру?
Посмотрите на это таким образом, вы можете написать 'type &c = a;', так почему вы ожидаете 'type &a = a;', чтобы не работать в объявлении функции? – user657267
@ user657267 'type &a = a;' - что? –
@MattMcNabb Я пытаюсь сказать, что если вы рассматриваете аргументы функции как просто другое объявление локальной переменной, должно быть очевидно, почему это работает, OP четко понимает, как работает 'type &c = a;', связывая 'a', объявленный ниже' foo 'с аргументом' foo' 'a' ничем не отличается. – user657267