흔히 IDE에서
free 할때나 포인터에 NULL 값을 넣을 때 자주 쓰는 'NULL'
NULL의 원형을 살펴보면 다음과같다.
이놈은 2가지 경우에서 흔히 문제가 발생.
-
any_function(NULL)
-
switch _ case 에서 switch(NULL)
1번의 경우 argument를 int 0으로 인식하고
2번의 경우도 switch(0) 을 받게된다.
NULL이 0으로 define 되어있는 것이 그 원인이다. (ambiguous)
이를 해결하기 위해 나온 C++11 의 표준 'nullptr'
포인터 변수에 nullptr을 대입하자.
any_ptr = nullptr
=> left_value(any_ptr)가 포인터 변수라는 것을 알 수 있어 가독성 증가
=> switch case & argument 에서 '0' 값으로 인식할 위험이 사라짐.
(만약 any_ptr이 포인터가 아닐 경우 compile error 발생)
[Reference]
http://www.cplusplus.com/reference/cstddef/nullptr_t/
'C > C++' 카테고리의 다른 글
[C++] Lambda Function (0) | 2020.03.30 |
---|---|
[C++] template <typename T> (0) | 2020.03.23 |
[C++] auto (0) | 2020.03.21 |
[std] Vector (0) | 2020.03.21 |
C++ Naming Rule (Feat. Google C++ Guide) (0) | 2020.03.08 |