[모던 C++] nullptr

Jin Hur·2022년 10월 23일
0

C++

목록 보기
9/18

nullptr

과거에는 null을 의미하는 값을 포인터 변수에 전달하기 위해 0 또는 NULL을 사용하였다. 참고로 NULL은 단순히 "#define NULL 0" 이다. 그런데 0과 NULL을 사용하는 것에 몇가지 문제가 발생하였다.
발생하는 문제점과 nullptr로 해결하는 방법은 다음과 같다.

1. 오동작 방지

void Test(int a) {
	cout << "Test(int) 호출" << endl;
}
void Test(void* ptr) {
	cout << "Test(void*) 호출" << endl;
}

int main() {
	/* 과거 */
	// 과거에는 null을 의미하는 값을 포인터 변수에 전달하기 위해 0 또는 NULL을 사용하였다.
	// 참고로 NULL은 단순히 "#define NULL 0" 이다.
	// 그런데 0과 NULL을 사용하는 것에 몇가지 문제가 발생하였다.

	/* 1. 오동작 방지 */
	
	Test(NULL);			// #define NULL 0 이기에 NULL은 사실상 0에 불과 

	Test(nullptr);		// 포인터라는 의미가 있기에 

}

2. 코드 가독성 증가

	{
		auto ret = FindKnight();
		if (ret == nullptr) {
			// 위 조건문을 통해 반환 자료형이 포인터 형임을 추론할 수 있다.
		}

	}

0개의 댓글