que español ejemplo c++ c++11 nullptr

c++ - español - ¿Cuáles son los usos del tipo `std:: nullptr_t`?



que es null c++ (2)

Aprendí que nullptr , además de ser convertible a cualquier tipo de puntero (pero no a cualquier tipo integral) también tiene su propio tipo std::nullptr_t . Por lo tanto, es posible tener una sobrecarga de método que acepte std::nullptr_t .

¿Exactamente por qué se requiere tal sobrecarga?


Hay algunos casos especiales que la comparación con un tipo nullptr_t es útil para indicar si un objeto es válido.

Por ejemplo, el operator== y el operator!= Sobrecargas de std::function solo podrían tomar nullptr_t como parámetro para indicar si el objeto de función está vacío. Para más detalles puedes leer esta pregunta .


Si más de una sobrecarga acepta un tipo de puntero, es necesaria una sobrecarga para std::nullptr_t para aceptar un argumento nullptr . Sin la sobrecarga std::nullptr_t , sería ambiguo qué sobrecarga de punteros debería seleccionarse cuando se pasa nullptr .

Ejemplo:

void f(int *intp) { // Passed an int pointer } void f(char *charp) { // Passed a char pointer } void f(std::nullptr_t nullp) { // Passed a null pointer }