본문 바로가기
728x90

null1

[C++] 왜 0이나 NULL이 아닌 nullptr을 사용해야 할까? 0이나 NULL의 경우 형식이 포인터의 형식이 아니다. 0의 경우 포인터의 위치에 있으면 단순히 널포인터로 인식만 할 뿐이다. 0은 단순히 int일 뿐이다. NULL 또한 마찬가지이다. 그렇다면 0과 NULL을 쓰는 것이 왜 문제일까? 위와 같이 오버로딩된 함수들이 있다고 하자. 이 때 사용자가 func(0)을 사용했다. 그렇다면 위 세가지 함수 중 어떤 함수가 실행될 것인가? 당연히 func(int n) 함수를 호출할 것이다. 그렇다면 void func(void* vp)를 호출하고 싶은데 인자로 null을 넣고 싶으면 어떻게 해야하는가 0 과 NULL 둘 다 func(void* vp)를 호출 할 수 없다. 결국 답은 nullptr 뿐이다. nullptr은 정수의 형식이 아니다. 모든 형식의 포인터인데 .. 카테고리 없음 2022. 1. 22.
728x90