El hecho de que esté realizando una llamada a un método no tiene importancia aquí. La inicialización del parámetro de referencia durante una llamada a la función no es diferente de una inicialización de referencia independiente y se rige por las mismas reglas.
Las reglas de inicialización de referencia son un poco complicadas, pero la conclusión es que si el inicializador es un valor l (el argumento en la llamada al método en su caso) y el tipo de referencia es el mismo que el tipo de el inicializador (es decir, el tipo de parámetro es el mismo que el tipo de argumento), entonces la referencia se vinculará directamente. Es decir. no se crea copia
Object a; // class type
Object &r = a; // no copying
const Object &cr = a; // no copying
Si estos requisitos no se cumplen (por ejemplo, si el inicializador es un valor r), entonces todo depende. En algunos casos, la copia podría y tendrá lugar. Por ejemplo
const Object &tr = Object();
puede ser interpretado por el compilador como
const Object &tr = Object(Object(Object(Object())));
con número finito dependiente de la implementación de copyings. Por supuesto, por razones de eficiencia, los compiladores normalmente intentan no crear copias innecesarias, incluso cuando pueden copiar.
Un ejemplo clásico que a menudo suscita debate sobre la validez del comportamiento copia del compilador es la inicialización de referencia en expresiones como la siguiente
Object a;
const Object &r = <some condition> ? a : Object();
Una persona familiarizada con la semántica de C++ de referencia entendería que expresiones como lo anterior es probablemente la razón detrás del permiso estándar para realizar copias superfluas durante la inicialización de referencia.
Su terminología no debe sugerir que 'anotherObject' está creando una copia de sí mismo .. el objeto que se crea después de que el nuevo será la creación de una copia de' otroObjeto'. –
@Hassan: No cambie el significado de la pregunta sin consultar el OP. Esa es una distinción importante. '& anotherObject' es un puntero, no una referencia. –
"no se puede decir" que 'new object (& anotherObject)' creará una copia de otro objeto implícitamente (que es lo que sugiere la fraseología). Para que esa afirmación sea verdadera, la sintaxis necesita ser ajustada. –