En C++, puedo escribir algo como:¿Cómo funciona shared_ptr trabajar en si la condición
shared_ptr<A> a_sp = someFunctionReturningSharedPtr();
if (a_sp) {
cout << a_sp->someData << endl;
} else {
cout << "Shared Pointer is NULL << endl;
}
¿Por qué if (a_sp)
trabajo de verificación correctamente? a_sp
no es un booleano, pero ¿cómo se verifica que sea verdadero o falso? ¿Cómo sabe la condición if para verificar el resultado de la función a_sp.get()
? O si no lo hace, ¿cómo se verifica el NULL
ity del a_sp
? ¿Hay alguna función en shared_ptr
definida que la convierta en valor booleano?
Mankarse: ¿Qué es esta sintaxis 'operator unspecified-bool- tipo() '. No he visto esto antes. ¿Es esto algo especial para impulsar? –
unspecified-bool-type es solo un soporte para un tipo real, como bool. Esta sintaxis no es una mejora especial, es la sintaxis para declarar un "operador de conversión de tipo". Ver [wikibooks] (http://en.wikibooks.org/wiki/C++Programming/Operators/Operator_Overloading#Conversion_operators) – Mankarse
Mankarse: Impresionante. Gracias por el enlace. –