Espacios de nombres
Variantes

Literal de puntero nullptr

De cppreference.com
 
 
 
 

Sintaxis

nullptr (desde C++11)

Explicación

La palabra clave nullptr denota el literal de puntero. Es un prvalue de tipo std::nullptr_t. Existen conversiones implícitas de nullptr al valor de puntero nulo de cualquier tipo puntero y cualquier tipo puntero a miembro. Existen conversiones similares para cualquier constante de puntero nulo, que incluye valores de tipo std::nullptr_t así como la macro NULL.


Ejemplo

Demuestra que nullptr retiene el significado de puntero nulo incluso si ya no es un literal.

#include <cstddef>
#include <iostream>

template<class T>
constexpr T clone(const T& t)
{
    return t;
}

void g(int* i)
{
    std::cout << "Se ha llamado a la función g\n";
}

int main()
{
    g(nullptr);        // de acuerdo
    g(NULL);           // de acuerdo
    g(0);              // de acuerdo

    g(clone(nullptr);  // de acuerdo
//  g(clone(NULL);     // ERROR: cero no-literal no puede ser una constante de puntero nulo
//  g(clone(NULL);     // ERROR: cero no-literal no puede ser una constante de puntero nulo
}

Salida:

Se ha llamado a la función g
Se ha llamado a la función g
Se ha llamado a la función g
Se ha llamado a la función g

Palabras clave

nullptr

Referencias

  • El estándar C++23 (ISO/IEC 14882:2023):
  • 7.3.12 Pointer conversions [conv.ptr]
  • El estándar C++20 (ISO/IEC 14882:2020):
  • 7.3.12 Pointer conversions [conv.ptr]
  • El estándar C++17 (ISO/IEC 14882:2017):
  • 7.11 Pointer conversions [conv.ptr]
  • El estándar C++14 (ISO/IEC 14882:2014):
  • 4.10 Pointer conversions [conv.ptr]
  • El estándar C++11 (ISO/IEC 14882:2011):
  • 4.10 Pointer conversions [conv.ptr]

Véase también

Constante de puntero nulo definido por la implementación.
(constante de macro) [editar]
(C++11)
El tipo del literal nullptr.
(typedef) [editar]