C언어
NULL
int number = NULL; (O)
int* ptr = NULL; (O)
nullptr //NULL 인데 포인터로 지정
int anotherNumber = nullptr; (Error)
int* anotherPtr = nullptr; (O)
포인터에는 언제나 nullptr을 사용하자. 더 이상 NULL이 있을 곳은 없다.
고정 폭 정수형
기존 기본 자료형은 몇 바이트로 만들어라 라는 표준이 없다. int는 4byte라고 알려져있지만 모두 그런 것은 아님.
대표적으로 long은 C#에서 8byte C++에서는 4byte임
이렇게 컴파일러마다 다른 자료형 크기를 고정하기위하여 만듦
int8_t / uint8_t
int16_t / uint 16_t
intptr_t / uintptr_t 등 더 많은 자료형이 존재.
-> 가독성 향상을 위해 기존 자료형보다 이것들을 사용하자
enum에는 type checking이 되지 않는다.
-> 다른 enum이지만 상수이기에 값이 겹칠 수 있다. 이로써, 다른것을 가리키지만 값이 같아 문제가 발생할 수 있다.
-> enum class을 사용 기존의 enum을 enum class로 선언
-> 값은 같지만 class가 달라 값이 같은상태로 비교되는 문제 해결
enum class는 enum에 할당할 바이트 양 정하기 가능 (<cstdint>헤더 include)
ex) enum class ScoreType : uint8_t {...};
헤더에서 초기화하기
-> 헤더파일에서 class를 선언하고 변수를 초기화가 가능(추천하지 않음)
-> 큰 DB에서 사용하는거 비추천, 헤더가 변경될 때마다 모든 .cpp 파일을 다시 빌드해야한다.
-> 문제가 커짐 (즉, 안쓰는게 좋다.)
'C++' 카테고리의 다른 글
C++ 스마트 포인터 (0) | 2021.12.28 |
---|---|
C++ STL (0) | 2021.12.27 |
C++ 11/14/17/...의 키워드 (0) | 2021.12.24 |
C++ STL 알고리듬 (0) | 2021.12.22 |
C++ 탬플릿 프로그래밍 (0) | 2021.12.22 |