Wiele przykładów korzystania std::unique_ptr
zarządzać własności zależności klasy wyglądać następująco:Znakowanie std :: unique_ptr członkiem klasy jako const
class Parent
{
public:
Parent(Child&& child) :
_child(std::make_unique<Child>(std::move(child))){}
private:
std::unique_ptr<Child> _child;
};
Moje pytanie brzmi, czy oznaczenie elementu _child
jak const
mieć dowolny nieoczekiwane efekty uboczne? (Poza zapewnieniem, że reset()
, release()
itp. Nie można wywołać na _child
).
Pytam, ponieważ nie widziałem go jeszcze w tym przykładzie i nie wiem, czy jest to celowe, czy tylko dla zwięzłości/ogólności.
Zadaj sobie pytanie: Jeśli jest "const", czy można go przenieść z? – NathanOliver
Mówisz, że istnieje wiele przykładów, które nie dają się skompilować? Ten, który pokazujesz, z pewnością robi. W szczególności część "_child (std :: move (child))" nie ma sensu. –
Próba przeniesienia 'const' unique_ptr nie powiedzie się, ponieważ kopiowanie zostało usunięte i nie ma konstruktora, który pobiera wartość stałą r. –