Uso del operador & en firmas de funciones C ++
Actualmente estoy leyendo a través de C ++ acelerado y me di cuenta de que realmente no entiendo cómo y funciona en las firmas de funciones.
int* ptr=#
significa que ptr ahora tiene la dirección en num, pero ¿qué significa eso?
void DoSomething(string& str)
de lo que entiendo es un pase por referencia de una variable (lo que significa pasar la dirección) pero cuando lo hago
void DoSomething(string& str)
{
string copy=str;
}
lo que crea es una copia de str. Lo que pensé que haría sería generar un error ya que estoy tratando de asignar un puntero a una variable.
¿Que está sucediendo aquí? ¿Y cuál es el significado de usar * y & en llamadas a funciones?