C, C++, C#/C++ 공부

[C++11] nullptr

밥보92 2018. 5. 30. 13:23
반응형

#nullptr

 

기존 C++은 포인터 변수가 가리키는 주소가 없는 경우 NULL을 사용했다

void* p1 = 0;

0은 암시적으로 NULL을 의미함

 

만약 포인터를 인자로 받는 경우 NULL을 0으로 전달하는 경우 정수형 0으로 인식되는 문제가 발생할 수 있다.

 

즉 근복적으로 NULL 포인터의 값을 정수인 0을 사용했기 때문이고 C++11에서는 이를 해결 하기위하여 nullptr이 기존의 NULL을 대체하려고한다.

 

nullptr의 타입은 실제 nullptr_t이다. 즉, 정수형과 호환이 될 수 없다.

단, boolean과 호환이 가능하고 nullptr이 false로서 사용이 가능하다.

 

int main()

{

    int* p1 = nullptr;

    nullptr_t p2 = nullptr;

}

반응형