Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- MySQL
- JavaScript
- npm
- Express
- current_date
- REACT
- log4j2
- expire_logs_days
- upgrade
- Webpack
- spring
- 정규표현식
- spring cloud
- git
- migration
- java
- Effective Java 3/e
- 퀵소트
- Regular expression
- nodejs
- Node
- update
- mysql 5.5
- Spring Batch
- regex
- Chunk
- REACTJS
- eslint
- log_bin
- Effective Java
Archives
- Today
- Total
내 세상
[C++] nullptr 본문
728x90
반응형
int main()
{
int n1 = 0;
int* p1 = 0; // ok. 0은 정수 이지만 포인터로 암시적 형변환 된다.
//int* p = 10; // error. 10은 정수라도 포인터로 변환될 수 없다.
// C++11 스타일
// 포인터 초기화시에는 0 대신 nullptr을 사용하자
int n2 = nullptr; // erorr
int* p2 = nullptr; // ok
}
#include <iostream>
void foo(void *p) { std::cout << "void*" << std::endl; }
void foo(int n) { std::cout << "int" << std::endl; }
void goo(char* p) { std::cout << "goo" << std::endl; }
int main()
{
foo(0); //결과는 ? int
foo((void*)0); // void*
#ifdef __cplusplus
#define NULL 0
#else
#define NULL (void*)0
#endif
foo(NULL); // NULL은 이렇게 만들어 줘야함.
goo(NULL); // void* => char* 로의 암시적 변환 필요
// C언어 : ok, C++ 언어: 암시적 변환 안됨.
foo(nullptr);
}
#include <iostream>
void foo(int n) { std::cout << "int" << std::endl; }
void foo(double n) { std::cout << "double" << std::endl; }
void foo(bool n) { std::cout << "bool" << std::endl; }
void foo(char* n) { std::cout << "char*" << std::endl; }
int main()
{
foo(0); // int. 0은 정수형 literal
foo(0.0); // double. 0.0은 실수형 literal
foo(false); // bool. false은 bool형 literal
foo(nullptr); // char*. nullptr은 포인터형 literal
// 모든 literal은 타입이 있습니다.
0; // int
0.0; // double
nullptr; // nullptr_t라는 타입입니다.
// nullptr_t라는 타입은 모든 포인터로 암시적 형변환
// 됩니다.
nullptr_t a = nullptr;
int* p = a; // ok.. a는 결국 nullptr
}
728x90
반응형
'Language > C/C++' 카테고리의 다른 글
[C/C++] const VS #define (0) | 2021.02.16 |
---|---|
[C++] 동적 메모리/ 레퍼런스 (0) | 2020.01.02 |
[C++] C++스타일의 캐스팅 (0) | 2020.01.02 |
[C++] C++11/C++17 에서의 반복문/제어문 (0) | 2020.01.02 |
[C++] 함수 (0) | 2020.01.02 |