C에서 NULL이 nullptr로 대체된 이유는 무엇입니까?
C에서는 NULL 매크로를 사용하여 널 포인터를 나타냅니다. 그러나 C 0x에서는 NULL이 새로운 키워드인 nullptr로 대체되었습니다. 이러한 변경은 여러 가지 이유로 이루어졌습니다.
-
향상된 유형 안전성: NULL은 암시적으로 모든 포인터 유형으로 변환될 수 있습니다. 이로 인해 오버로드된 함수를 호출할 때 모호함이 발생할 수 있습니다. 예를 들어, 다음 함수 오버로드 해결은 모호합니다.
void f(int);
void f(foo *);
로그인 후 복사
f(NULL)를 호출하면 상황에 따라 두 오버로드와 일치할 수 있습니다.
-
향상된 컴파일 시간 오류 검사: nullptr에는 std::nullptr_t 유형이 있습니다. 다른 유형에서. 이를 통해 컴파일러는 포인터가 아닌 변수에 nullptr을 할당하는 등 잘못된 컨텍스트에서 nullptr을 사용할 때 오류를 조기에 감지할 수 있습니다.
-
다른 언어와의 일관성: nullptr 키워드는 일관성이 있습니다. Java와 같은 널 포인터에 고유한 키워드를 사용하는 다른 프로그래밍 언어와 함께 사용 Python.
어떤 시나리오에서 nullptr을 사용하는 것이 유익합니까?
다음 시나리오에서는 NULL 대신 nullptr을 사용하는 것이 좋습니다.
-
오버로드된 함수를 호출할 때: nullptr은 오직 일치합니다. std::nullptr_t 및 오버로드 해결의 포인터 유형. 이렇게 하면 모호함이 제거되고 올바른 함수 오버로드가 호출됩니다.
-
템플릿 작업 시: nullptr을 사용하면 템플릿을 보다 일반적이고 유형에 안전한 방식으로 작성할 수 있습니다. 예를 들어, 포인터에서 작동하는 템플릿은 nullptr을 기본값으로 사용하여 템플릿이 null 포인터와 함께 사용될 수 있도록 보장합니다.
위 내용은 C에서 NULL이 nullptr로 대체된 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!