> 백엔드 개발 > C++ > C에서 `nullptr`을 언제 사용해야 합니까?

C에서 `nullptr`을 언제 사용해야 합니까?

Susan Sarandon
풀어 주다: 2024-11-09 09:38:02
원래의
257명이 탐색했습니다.

When Should You Use `nullptr` in C  ?

nullptr을 사용해야 하는 경우

C 코드에서 포인터는 개념적으로 동등한 값(nullptr, NULL 또는 0)으로 초기화될 수 있습니다. 값은 모두 널 포인터를 나타내며, nullptr은 여러 가지 장점을 제공합니다.

오버로드된 함수 호출

다음 오버로드된 함수를 고려하세요.

void f(char const *ptr);
void f(int v);
로그인 후 복사

nullptr이 없으면 다음 호출은 모호성을 초래합니다.

f(NULL);  //which function will be called?
로그인 후 복사

그러나 nullptr을 사용하면 의도된 함수 호출이 명확해집니다.

f(nullptr); //first function is called
로그인 후 복사

nullptr에 대한 템플릿 특수화

또한 nullptr은 특히 null 포인터에 대한 템플릿 특수화를 허용합니다. 다음 템플릿을 고려하십시오.

template<typename T, T *ptr>
struct something{};                     //primary template
로그인 후 복사

nullptr에 대해 다음과 같은 부분 특수화를 정의할 수 있습니다.

template<>
struct something<nullptr_t, nullptr>>{};  //partial specialization for nullptr
로그인 후 복사

이를 통해 nullptr 인수 처리를 위한 전용 오버로드를 생성할 수 있습니다.

template<typename T>
void f(T *ptr);   //function to handle non-nullptr argument

void f(nullptr_t); //an overload to handle nullptr argument!!!
로그인 후 복사
로그인 후 복사

nullptr에 대한 유형 추론

템플릿에서 nullptr의 유형은 nullptr_t로 추론됩니다. 이는 아래와 같이 코드를 단순화합니다.

template<typename T>
void f(T *ptr);   //function to handle non-nullptr argument

void f(nullptr_t); //an overload to handle nullptr argument!!!
로그인 후 복사
로그인 후 복사

위 내용은 C에서 `nullptr`을 언제 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿