개발자 '쑥말고인절미'
[C++] nullptr 본문
요약
- nullptr은 C++11 표준에서 도입된 키워드이다.
- C++ 이전 버전에서는 포인터가 아무것도 가리키지 않음을 나타내기 위해 NULL을 사용했지만, NULL은 0 으로 정의된 매크로였기 때문에 몇 가지 문제가 있었다
nullptr 도입 이전의 문제점
- 타입 안정성
- NULL은 본질적으로 정수형 0과 동일했기 때문에, 포인터와 정수를 구분하기 어려운 경우가 있었다. 예를 들어, 함수 오버로딩이나 템플릿에서 NULL을 사용하는 경우 애매한 상황이 발생할 수 있었다.
- 함수 오버로딩
- 함수 오버로딩 시 NULL 을 전달할 때 어떤 오버로드를 선택할지 명확하지 않은 경우가 있었다. 예를 들어, 정수와 포인터를 매개변수로 받는 두 함수가 있을 때, NULL을 전달하면 정수 오버로드를 선택할 수도 있었다.
nullptr의 장점
- 타입 안정성
- nullptr은 std::nullptr_r 타입을 가지며, 이는 모든 포인터 타입으로 암시적으로 변환될 수 있지만 정수로 변환되지 않기 때문에 위의 문제를 해결한다.
- 명확성
- nullptr은 포인터를 위한 전용 키워드로, 코드의 가독성과 명확성을 높여준다.
예시
// C++ 11 이전
int* ptr = NULL; // NULL은 0으로 정의된 매크로
// C++ 11 이후
int* ptr = nullptr; // nullptr는 포인터 전용 상수
'STUDY > C++ & MFC' 카테고리의 다른 글
[MFC] SetWindowPos(), MoveWindow() (0) | 2024.08.27 |
---|---|
[MFC]GetWindowRect(), GetClientRect(), ScreenToClient() (0) | 2024.08.27 |
[MFC] CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd(); (0) | 2024.08.11 |
[C++] 헤더파일 import 하지않고 포인터 사용해서 클래스 간 메소드 참조하기 (0) | 2024.08.07 |
[MFC] ON_MESSAGE() (0) | 2024.08.05 |