2013-06-12 6 views

Odpowiedz

10

Nie zwracaj według wartości jako const. Kiedy zwrócisz cokolwiek, co mówisz, "Teraz dzwoni, to jest teraz twoje, rób to, co chcesz". Jeśli osoba dzwoniąca z twojej metody nie chce jej modyfikować, może zapisać ją jako const, jak pokazano powyżej: const A a = getA();. Ale ty (jako metoda) nie powinieneś mówić rozmówcy, czy jego obiekty są czy nie (twoja wartość zwracana to jego obiekt).

Jeśli wartość zwracana jest const, nie można z niej wstawić move do nowego obiektu, więc konstruktor ruchu nie jest nawet brany pod uwagę. Jedyną opcją jest kopiowanie, które również nie działa, ponieważ w twoim przypadku jest to obiekt niekodowany. Jeśli powrót nie jest stały, możesz przejść od niego i uzyskać pożądane zachowanie.

+2

To jest dobra ogólna rada: zwracając wartość, nie należy ustawiać wartości const. Zwykle ci nie pomoże. –

Powiązane problemy