C++ 새로운 자료형

2021. 12. 26. 01:38C++

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