페이지

2014년 12월 22일 월요일

nullptr

nullptr (Visual Studio 2010부터 사용가능)

C++ 03까지는 NULL pointerNULL이나 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;

댓글 없음:

댓글 쓰기