nullptr 사용: NULL 및 0에 비해 장점
예기치 않은 동작을 방지하려면 포인터를 올바르게 초기화해야 합니다. 구문 int* p1 = nullptr;, int* p2 = NULL; 및 int* p3 = 0; 기능적으로는 동일해 보일 수 있지만 다른 두 옵션에 비해 nullptr을 사용하면 상당한 이점이 있습니다.
오버로딩 모호성 해결:
오버로드된 함수를 고려하세요.
void f(char const *ptr); void f(int v); f(NULL); // ambiguous function call
NULL을 사용하면 f(char const *) 또는 f(int)일 수 있으므로 컴파일러는 호출할 함수를 결정할 수 없습니다. 이러한 모호함은 예상치 못한 오류로 이어질 수 있습니다. 그러나 nullptr을 사용하면 이러한 모호함이 해결됩니다.
f(nullptr); // calls f(char const *)
템플릿 전문화:
C에서 nullptr 유형은 nullptr_t입니다. 이를 통해 nullptr에 대한 템플릿 특수화가 가능해 비교할 수 없는 유연성을 제공합니다.
template<typename T, T *ptr> struct something{}; // primary template 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); // overload to handle nullptr argument
위 내용은 C의 포인터에 대해 `NULL`과 `0`보다 `nullptr`이 더 나은 선택인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!