Fakt, że wykonujesz wywołanie metody, nie ma tutaj żadnego znaczenia. Inicjowanie parametrów referencyjnych podczas wywołania funkcji nie różni się od inicjalizacji referencyjnej i podlega tym samym regułom.
Zasady inicjowania referencji są nieco skomplikowane, ale najważniejsze jest to, że jeśli inicjalizator jest lwartością (argument w wywołaniu metody w twoim przypadku), a typ referencji jest taki sam jak typ inicjator (tj. typ parametru jest taki sam, jak typ argumentu), wówczas referencja będzie powiązana bezpośrednio. To znaczy. kopia nie jest tworzona.
Object a; // class type
Object &r = a; // no copying
const Object &cr = a; // no copying
Jeśli te wymagania nie są spełnione (na przykład jeśli inicjalizator jest wartością runt), to wszystko zależy. W niektórych przypadkach kopiowanie może i będzie miało miejsce. Na przykład
const Object &tr = Object();
mogą być interpretowane przez kompilator jako
const Object &tr = Object(Object(Object(Object())));
z realizacji zależny od skończonej liczby copyings. Oczywiście, ze względów wydajnościowych kompilatory normalnie starają się nie tworzyć niepotrzebnych kopii, nawet jeśli mogą kopiować.
Klasycznym przykładem, że często wzbudza dyskusję na temat ważności zachowania kopiowanie kompilator jest inicjalizacja odniesienia w wyrażeniach jak na poniższym jednego
Object a;
const Object &r = <some condition> ? a : Object();
Osoba zaznajomiona z semantyki C++ odniesienia zrozumie, że wyrażenia takie jak powyższe są prawdopodobnie uzasadnieniem standardowego zezwolenia na wykonywanie zbędnego kopiowania podczas inicjowania referencji.
Twój terminologia nie powinny sugerować, że 'anotherObject' tworzy kopię siebie .. obiekt, który jest tworzony po nowy będzie tworzenie kopii' anotherObject'. –
@Hassan: Nie zmieniaj znaczenia pytania bez zadawania OP. To ważne wyróżnienie. '& anotherObject' to wskaźnik, a nie referencja. –
"nie można powiedzieć", że 'nowy obiekt (& innyObiekt)' utworzy niejawnie kopię innego obiektu (co sugeruje to sformułowanie). Aby to stwierdzenie było prawdziwe, należy dostosować składnię. –