C++ 03까지는 NULL pointer를 NULL이나 0 으로 사용하였다.
그래서 아래와 같이 함수 호출시 애매한 문제를 해결하기 위해서 nullptr이라는 class가 새로 생겼다.
void func(int a) { std::cout << _T("func - int") << std::endl; }
void func(double * a) { std::cout << _T("func - pointer")<< std::endl; }
func(0); // func(int)func(NULL); // func(int)func(static_cast<double*>(NULL)); // func(double*) func(nullptr); // func(double*) |
sizeof, typeid, throw 연산이 모두 가능하다.
char* c = nullptr;
sizeof(nullptr); // 4
typeid(nullptr);
throw nullptr;
|
일반형 (int , bool 등)과의 연산/비교는 안된다.
int i = nullptr; // error
int j = 0;
if (j == nullptr); // error
if (nullptr); // error
nullptr = 0; // errornullptr + 2; // error |
하지만 nullptr를 대입한 pointer변수는 가능하다.
char* c = nullptr;
if (c);
c = 0;
c++;
c += 2;
|
댓글 없음:
댓글 쓰기