무민은귀여워

널 포인터 ( nullptr ) 본문

IT/c, c++

널 포인터 ( nullptr )

moomini 2019. 7. 12. 12:25
반응형

널 포인터는 아무것도 가리키지 않는 포인터이다.

내부 표현은 다르지만 c++는 이 포인터를 소스 코드에서 0을 표현하는데 사용해왔다. 하지만 종종 포인터 상수와 정수 모두 0으로 표현하기 때문에 문제가 발생한다.

따라서 nullptr이라는 키워드를 제공하여 널 포인터를 표현한다.

 

ex) int형 매개변수를 받는 함수에서 0은 통과되지만, 이런 함수에 nullptr이 들어오는 경우 컴파일러는 에러로 판단한다. 따라서 컴파일러가 분명하고 안전하게 받아들일 수 있도록 nullptr을 사용한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstddef>
#include <iostream>
 
template<class F, class A>
void Fwd(F f, A a)
{
    f(a);
}
 
void g(int* i)
{
    std::cout << "Function g called\n";
}
 
int main()
{
    g(NULL);           // Fine
    g(0);              // Fine
 
    Fwd(g, nullptr);   // Fine
//  Fwd(g, NULL);  // ERROR: No function g(int)
}
cs

 

결과 :

1
2
3
Function g called
Function g called
Function g called
cs
반응형

'IT > c, c++' 카테고리의 다른 글

[c++] next_permutation 조합 구하기  (0) 2019.11.20
cgame 프레임워크  (0) 2019.07.16
error) c4996 에러 #pragma warning(disable:4996)  (0) 2019.07.12
memo) 바이트 패딩  (0) 2019.07.12
rvalue 참조  (0) 2019.07.12
Comments