C++
널(null) 포인터 nullptr에 대해
SadEvil
2024. 12. 23. 16:05
반응형
nullptr은 C++부터 도입된 명시적 null 포인터 상수이며, 포인터가 어떤 객체도 가리키지 않는 것을 나타냅니다.
포인터를 초기화하거나 null 포인터를 표현하는데 사용합니다. 모든 포인터 타입에서 사용할 수 있습니다.
다만, 아래처럼 포인터가 아닌 값을 초기화할때는 사용할 수 없습니다.
int x = nullptr; //오류 발생. nullptr은 포인터로만 사용 가능함
장점
- NULL은 0으로 정의되어 있기 때문에, 숫자와 포인터를 혼동할 가능성이 존재했지만, nullptr은 명확히 포인터로만 사용되기 때문에, 정수와의 혼동을 방지합니다.
void func(int);
void func(int*);
func(NULL); // 불명확: 정수 0 또는 포인터 NULL로 해석될 수 있음
func(nullptr); // 명확: 포인터로 해석
- NULL의 정의는 시스템마다 다를 수 있지만, nullptr은 모든 플랫폼에서 동일한 의미를 가집니다(=플랫폼 독립적입니다).
nullptr과 기존 NULL의 차이점
특성 | nullptr | NULL |
도입 시기 | C++11 이상 | C, C++에서 사용 가능 |
타입 | std::nullptr_t | int or void* (플랫폼 의존) |
암시적 변환 | 모든 포인터 타입으로 변환 가능 | 주로 정수와 포인터로 변환 가능 |
오버로딩 구분 | 명확한 구분 가능 | 혼동 가능성 존재 |
요약
• nullptr는 C++11부터 제공되는 타입 안전한 null 포인터 상수입니다.
• 모든 포인터 타입으로 변환 가능하지만, 정수와는 구분됩니다.
• 기존 NULL의 모호성과 한계를 극복하기 위해 도입되었습니다.
• 오버로딩과 포인터 초기화 시에 특히 유용합니다.
반응형