본문 바로가기

C++

[C++] NULL은 int고 nullptr은 포인터다.

아무것도 없다는 것을 표현하고 싶을 때 NULL과 nullptr 두 방식으로 표현할 수 있다.

두 방식의 큰 차이점은 NULL은 0과 같기 때문에 int이고 nullptr은 포인터이다.

그래서 포인터가 아무것도 가리키지 않다는 것을 표현할 때는 NULL이 아니라 nullptr이 적합하다.

 

Test(NULL);  //Test(int) 생성자 실행
TEST(nullptr)//Test(void*) 생성자 실행

 

nullptr의 작동원리는 *연산자를 오버로딩해 0을 반환하는 것이다. 

그래서 결론적으로 nullptr도 0을 반환하지만 *가 붙어있는 포인터를 대상으로만  작동한다.

'C++' 카테고리의 다른 글

[C++] enum vs enum class  (0) 2022.06.25
[C++] typedef보다 using을 사용하자.  (0) 2022.06.25
[C++] auto  (0) 2022.06.25
[C++] algorithm 헤더의 remove, remove_if 주의점  (0) 2022.06.24
[C++] 값 타입 변환 vs 참조 타입 변환  (0) 2022.06.22