Я сейчас читаю Accelerated C ++ и понял, что не совсем понимаю, как & работает в сигнатурах функций.
int* ptr=#
означает, что ptr теперь хранит адрес как num, но что это значит?
void DoSomething(string& str)
насколько я понимаю, это передача по ссылке на переменную (что означает передачу адреса), но когда я делаю
void DoSomething(string& str)
{
string copy=str;
}
что он создает копию str. Я думал, что это вызовет ошибку, поскольку я пытаюсь присвоить указатель переменной.
Что здесь происходит? И в чем смысл использования * и & в вызовах функций?