В С++ я могу написать что-то вроде:
shared_ptr<A> a_sp = someFunctionReturningSharedPtr();
if (a_sp) {
cout << a_sp->someData << endl;
} else {
cout << "Shared Pointer is NULL << endl;
}
Почему функция if (a_sp)
работает правильно? a_sp
не является логическим, но как он проверяется на true или false? Как узнать условие if, чтобы проверить результат функции a_sp.get()
? Или, если это не так, как проверяется NULL
ity a_sp
? Есть ли определенная функция в shared_ptr
, которая преобразует ее в значение boolean?