이름공간
변수
행위

nullptr, the pointer literal

cppreference.com
< cpp‎ | language
 
 
C++ 언어
General topics
Flow control
Conditional execution statements
Iteration statements
Jump statements
Functions
function declaration
lambda function declaration
function template
inline specifier
exception specifications (deprecated)
noexcept specifier (C++11)
Exceptions
Namespaces
Types
decltype specifier (C++11)
Specifiers
cv specifiers
storage duration specifiers
constexpr specifier (C++11)
auto specifier (C++11)
alignas specifier (C++11)
Initialization
Literals
boolean literals
nullptr (C++11)
user-defined (C++11)
Expressions
alternative representations
Utilities
Types
typedef declaration
type alias declaration (C++11)
attributes (C++11)
Casts
implicit conversions
const_cast conversion
static_cast conversion
dynamic_cast conversion
reinterpret_cast conversion
C-style and functional cast
Memory allocation
Classes
Class-specific function properties
Special member functions
Templates
class template
function template
template specialization
parameter packs (C++11)
Miscellaneous
Inline assembly
 
 

목차

[편집] Syntax

nullptr (since C++11)

[편집] Explanation

The keyword nullptr denotes the pointer literal. It is a prvalue of type std::nullptr_t. There exist implicit conversions from nullptr to null pointer value of any pointer type and any pointer to member type. Similar conversions exist for any null pointer constant, which includes values of type std::nullptr_t as well as the macro NULL.

[편집] Example

Demonstrates that nullptr retains the meaning of null pointer constant even if it is no longer a 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
}

Output:

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

[편집] Keywords

nullptr

[편집] References

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

[편집] See also

구현에서 정의한 널 포인터 상수
(macro constant) [edit]
(C++11)
널 포인터 리터럴인 nullptr 의 형
(typedef) [edit]