Namespaces
Variants

nullptr , the pointer literal (since C++11)

From cppreference.net
C++ language
General topics
Flow control
Conditional execution statements
Iteration statements (loops)
Jump statements
Functions
Function declaration
Lambda function expression
inline specifier
Dynamic exception specifications ( until C++17* )
noexcept specifier (C++11)
Exceptions
Namespaces
Types
Specifiers
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Storage duration specifiers
Initialization
Expressions
Alternative representations
Literals
Boolean - Integer - Floating-point
Character - String - nullptr (C++11)
User-defined (C++11)
Utilities
Attributes (C++11)
Types
typedef declaration
Type alias declaration (C++11)
Casts
Memory allocation
Classes
Class-specific function properties
Special member functions
Templates
Miscellaneous

Contenidos

Sintaxis

nullptr

Explicación

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

Palabras clave

nullptr

Ejemplo

Demuestra que nullptr conserva el significado de constante 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*)
{
    std::cout << "Function g called\n";
}
int main()
{
    g(nullptr);        // Fine
    g(NULL);           // Fine
    g(0);              // Fine
    g(clone(nullptr)); // Fine
//  g(clone(NULL));    // ERROR: non-literal zero cannot be a null pointer constant
//  g(clone(0));       // ERROR: non-literal zero cannot be a null pointer constant
}

Salida:

Function g called
Function g called
Function g called
Function g called

Referencias

  • Estándar C++23 (ISO/IEC 14882:2024):
  • 7.3.12 Conversiones de puntero [conv.ptr]
  • Estándar C++20 (ISO/IEC 14882:2020):
  • 7.3.12 Conversiones de puntero [conv.ptr]
  • Estándar C++17 (ISO/IEC 14882:2017):
  • 7.11 Conversiones de puntero [conv.ptr]
  • Estándar C++14 (ISO/IEC 14882:2014):
  • 4.10 Conversiones de puntero [conv.ptr]
  • Estándar C++11 (ISO/IEC 14882:2011):
  • 4.10 Conversiones de punteros [conv.ptr]

Véase también

constante de puntero nulo definida por la implementación
(macro constante)
(C++11)
el tipo del literal de puntero nulo nullptr
(typedef)