리터럴 0은 int이지 포인터가 아니다.
NULL도 포인터 형식이 아니라는 점.
void f(int); // f의 3 가지 오버로딩
void f(bool);
void f(void*);
f(0); // f(int) 호출
f(NULL) // 보통 f(int) 호출
nullptr의 장점은 정수 형식이 아니다. 사실 포인터 형식도 아니다?
이 책보면서, 아쉬운건 번역이나 뭔가 어순?이 안 맞음. 내 맞춤법 마냥 답 없음
nullptr의 실제 형식은 std::nullptr_t인데, std::nullptr_t 자체는 다시 "nullptr의 형식"으로 정의(순환 정의)
f(nullptr); // f(void*) 오버로딩 호출
nullptr 은 코드의 명확성 높여준다.
auto result = findRecord(...);
if(result == 0) // findRecord에 대한 리턴 타입이 모호함.
{
}
if (result == nullptr) // 포인터라는 것을 알 수 잇음.
{
}
해당 챕터는 다른 내용이 없다.
널 포인터를 지정할 때에는 0이나 NULL이 아니라 nullptr를 사용하라
'서적 > Effective Modern C++' 카테고리의 다른 글
항목 7: 객체 생성 시 괄호(())와 중괄호({})를 구분하라 (0) | 2022.07.13 |
---|---|
항목 6: auto가 원치 않은 형식으로 연역될 때에는 명시적 형식의 초기치를 사용하라 (0) | 2022.07.06 |
항목 5: 명시적 형식 선언보다는 auto를 선호하라 (0) | 2022.07.04 |