Definido en el encabezado <clocale> |
||
---|---|---|
Definido en el encabezado <cstddef> |
||
Definido en el encabezado <cstdio> |
||
Definido en el encabezado <cstdlib> |
||
Definido en el encabezado <cstring> |
||
Definido en el encabezado <ctime> |
||
Definido en el encabezado <cwchar> |
||
#define NULL /*implementation-defined*/
|
La macro NULL
es una constante de puntero nulo definida por la implementación, que puede ser.
una expresión constante integral rvalue de tipo entero que se evalúa como cero. |
(hasta C ++ 11) |
un literal entero con valor cero, o un valor pr de tipo |
(desde C ++ 11) |
Una constante de puntero nulo se puede convertir implícitamente a cualquier tipo de puntero; tal conversión da como resultado el valor de puntero nulo de ese tipo. Si una constante de puntero nulo tiene un tipo entero, se puede convertir a un valor pr de tipo std::nullptr_t
.
Posible implementación
#define NULL 0 //since C++11 #define NULL nullptr |
Notas
En C, la macro NULL
puede tener el tipo void*
, pero eso no está permitido en C ++.
Ejemplo
#include <cstddef> #include <type_traits> #include <iostream> class S; int main() { int* p = NULL; int* p2 = static_cast<std::nullptr_t>(NULL); void(*f)(int) = NULL; int S::*mp = NULL; void(S::*mfp)(int) = NULL; if (std::is_same_v<decltype(NULL), std::nullptr_t>) { std::cout << "NULL implemented with type std::nullptr_tn"; } else { std::cout << "NULL implemented using an integral typen"; } }
Salida posible:
NULL implemented using an integral type
Informes de defectos
Los siguientes informes de defectos que cambian el comportamiento se aplicaron retroactivamente a los estándares C ++ publicados anteriormente.
DR | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
---|---|---|---|
CWG 903 | C ++ 11 | Se permitieron expresiones constantes con valor cero como 1-1. | solo se permite el cero literal |
Ver también
nullptr | el literal de puntero que especifica un valor de puntero nulo (C ++ 11) |
nullptr_t (C ++ 11) |
el tipo del literal de puntero nulo nullptr (typedef) |