[C++] Modern C++

2024. 4. 19. 18:21언어 및 엔진/C++

Modern C++

Auto

변수 정의 시 자료형을 지정해 주지 않아도 초기화 시 타입이 결정됨.

range based for

for문을 쉽고 안전하게 쓰기 위한 것
값 복사 방지 : 레퍼런스 받아오기
값 변경 방지 : const이용

enum class

강한 형 사용 / 범위
unscoped enumeration : 자료형이 붙지 않음
scoped enumeration : 자료형이 붙음
클래스로 선언하면 네임스페이스를 붙여야 한다.

non-static data member initializers

멤버변수의 선언과 동시에 초기화 가능

initializer lists

초기화 리스트 전용 타입. 함수의 인자, 유저 정의형, STL
컨테이너의 초기화 가능

default / delete definition

default : 컴파일러가 함수를 자동으로 셍성하도록 명시적으로 지정
delete : 컴파일러가 함수를 자동으로 생성하지 않도록 명시적으로 지정

override / final

override : 재정의
final : 재정의 방지

emplacement

오브젝트 생성과 컨테이너 추가를 한번에. 값 복사가 없기 때문에
더 적은 비용으로 가능

constexpr

변수, 함수, 클래스를 정수로 사용 가능

lambda

어떤 변수를 넣을 때 []캡쳐를 이용하여 바로 넣을 수 있다.
스코프의 변수를 참조또는 복사, 변경할 때 사용
auto사용 가능, 가변 인수로 사용 가능

random

예측 불가능한 난수 생성

thread

여러 함수를 동시에 실행이 가능하도록 한다.

sleep을 이용하여 일시 중지가 가능
yield를 이용하여 양보가 가능
공유자원을 사용할 수 있는지 조사 (다른 thread에서 lock을 걸었다면 
사용할 수 없다 - 대기하거나, 바로 false를 반환하거나) - 실수로 unlock을
호출하지 않을 경우를 대비하여 lock_guard를 사용하도록 한다.
단 한번만 실행하고 싶을 때에는 call_once를 사용하도록 한다.

'언어 및 엔진 > C++' 카테고리의 다른 글

[C++] DeadLock  (0) 2024.04.19
[C++] Multi Process / Multi Thread  (0) 2024.04.19
[C++] 메모리 구조와 메모리 단편화  (0) 2024.04.19
[C++] Smart Pointer  (0) 2024.04.19
[C++] Overloading / Overriding  (0) 2024.04.19