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 중국어 웹사이트의 기타 관련 기사를 참조하세요!