W C++, mogę napisać coś takiego:Jak shared_ptr działa, jeśli stan
shared_ptr<A> a_sp = someFunctionReturningSharedPtr();
if (a_sp) {
cout << a_sp->someData << endl;
} else {
cout << "Shared Pointer is NULL << endl;
}
Dlaczego if (a_sp)
działa Sprawdź poprawnie? a_sp
nie jest wartością boolowską, ale w jaki sposób jest sprawdzana pod kątem wartości true lub false? W jaki sposób warunek if sprawdza wynik działania funkcji a_sp.get()
? A jeśli nie, w jaki sposób sprawdzana jest wartość NULL
? Czy istnieje określona funkcja shared_ptr
, która przekształca ją w wartość boolowską?
Mankarse: Czym jest ten operator składni "nieokreślony-boolowy" type() '. Nie widziałem tego wcześniej. Czy jest to coś szczególnego do wzmocnienia? –
nieokreślony-bool-type jest po prostu podstawą dla rzeczywistego typu, takiego jak bool. Ta składnia nie jest specjalną cechą doładowania, jest to składnia deklarująca "operator konwersji typów". Zobacz [wikibooks] (http://pl.wikibooks.org/wiki/C++_Programming/Operators/Operator_Overloading#Conversion_operators) – Mankarse
Mankarse: Awesome. Dzięki za link. –