개인공부용1/etc
NULL vs nullptr
옆집히드라
2024. 9. 2. 02:19
NULL은 C언어에서 유래된 매크로로 #define NULL 0 으로 정의되었다
-> 함수의 오버로딩을 사용할 때 NULL을 전달하면 포인터와 정수형 타입간의 혼동이 발생한다
nullptr은 C++ 11에서 도입된 키워드로 포인터 타입과 호환되는 null 포인터 상수를 나타낸다. 혼동 발생 x
#include <iostream>
void foo(int x) {
std::cout << "int version called: " << x << std::endl;
}
void foo(int* p) {
std::cout << "pointer version called" << std::endl;
}
int main() {
foo(0); // int version called: 0
foo(NULL); // int version called: 0 (int 타입으로 해석됨)
foo(nullptr); // pointer version called (포인터 타입으로 해석됨)
}