본문 바로가기

C, C++

nullptr(NULL)

원래 포인터에서 없는 값을 0으로 나타냈습니다. C언어에서는 주로 이 0값을 NULL 이름의 매크로로 만들어서 사용했지만 C++ 11에서 nullptr이 추가되었습니다.

#define NULL 0 

int* ar;
ar = NULL; 
ar = nullptr;

int i = nullptr;//오류 nullptr은 숫자가 아닙니다.

nullptr은 내부적으로 0값과 같지만 숫자로 취급되지 않고 없는 값으로 취급됩니다. 이로써 숫자 0과 없는 값의 구분이 명확해졌습니다.

구분이 명확해지면 좋은 점은 다음과 같이 함수 오버 로딩이 가능합니다.

#include <stdio.h>

void Func(int* i) {
} 

void Func(int i) {
} 

int main() { 
	Func(nullptr);//위의 함수가 호출
    Func(0);//아래의 함수가 호출
    
    return 0;
}

nullptr이 없으면 NULL(0)을 넣어야 되는데 이러면 원래 목적과 달리 아래의 함수가 호출됩니다.

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

시간 함수  (0) 2020.01.12
수학 함수  (0) 2020.01.09
동적 할당  (0) 2020.01.06
goto  (0) 2019.12.27
typedef  (0) 2019.12.24