[C++] 널포인터(nullptr)
1. nullptr
- 가독성이 좋은 null
- Zero value 와 다르게 암시적 형변환이 불가능
- nullptr 은 nullptr_t 라는 타입
- nullptr_t는 모든 타입의 포인터로 암시적 형변환 가능
2. 코드로 알아보기
- nullptr_t는 모든 타입의 포인터로 암시적 형변환 가능
- web_compiler 에서 확인
#include <iostream>
using namespace std;
int main()
{
int n1 = 0;
int* p1 = 0; // 0은 정수지만 포인터 암시적 형변환
// int* p2 = 10; // error
int* p3 = nullptr; // 포인터 0
// int n2 = nullptr; // error.
}
#include <iostream>
using namespace std;
void foo(int n) { cout << "int" << endl; }
void foo(double n) { cout << "double" << endl; }
void foo(bool p) { cout << "bool" << endl; }
void foo(void* p) { cout << "void*" << endl; }
int main()
{
foo(0); // int. 0은 정수형 리터럴
foo(0.0); // double. 0.0은 실수형 리터럴
foo(false); // bool. false은 bool 형 리터럴
foo(nullptr);// void* nullptr은 pointer 리터럴
// nullptr_t 암시적 형변환
nullptr_t a = nullptr;
void* p2 = a;
}
참고
codenuri 강석민 강사 강의 내용기반으로 정리한 내용입니다.
코드누리
This is personal diary for study documents.
Please comment if I'm wrong or missing something else 😄.
댓글남기기