개발/C++ (98,03,11,14,17,20,23)23 Modern C++ : type conversions (11, 14, 17, 20) 타입 변환 : type conversions 개요본 문서에서는 C++11 이후에 도입된 다양한 타입 변환 기능들을 한눈에 살펴보고, 각 기능의 사용법과 장단점을 제시합니다. C++ 버전별 주요 키워드 도입 시기C++11auto, Uniform Initialization ({})static_cast(명시적 변환) 강화C++14함수 반환형 autoC++17구조적 바인딩 (Structured Binding)C++20std::bit_cast (헤더 ) 내용 설명auto변수 선언 시 타입을 컴파일러가 추론코드 가독성 향상 및 복잡한 타입 축소Uniform Initialization중괄호 {} 를 사용해 초기화직접 리스트 초기화(direct list-init)에서 narrowing 금지 규칙 적용축소 변환 (nar.. 2025. 8. 5. Modern C++ : designated initializers (20) 지정 이니셜라이저 : designated initializers 개요C++20부터 구조체와 배열 등에 지정 이니셜라이저를 사용하여 멤버 이름을 명시적으로 지정해 초기화할 수 있습니다.이를 통해 멤버 순서와 관계없이 원하는 멤버만 선택적으로 초기화할 수 있으며, 지정하지 않은 멤버는 기본값으로 초기화됩니다. C++ 버전별 주요 키워드 도입 시기C++20: P1008R1 제안에 따라 지정 이니셜라이저 도입 내용 설명구조체, 배열, 클래스 애그리게이트에 사용 가능.멤버 = 값 형식으로 초기화하며, 초기화 순서와 정의 순서는 무관지정하지 않은 멤버는 기본값(0 또는 디폴트 생성자)으로 초기화동일 멤버를 중복 지정 시 컴파일 에러 발생 예제 코드#include #include struct User { en.. 2025. 8. 4. Modern C++ : enum concepts (11, 20) enum concepts개요C++20 Concept와 열거형(Enum)을 통합하여 타입 안전성과 가독성을 동시에 확보하는 방법을 설명합니다. C++ 버전별 주요 키워드 도입 시기C++11: enum classC++20: concept 내용 설명C++20에서 도입된 concept는 템플릿 타입 매개변수에 대한 제약 조건을 명시적으로 정의할 수 있습니다. 열거형 전용 EnumType concept를 정의하면, 템플릿 함수가 오직 열거형 타입만을 허용하도록 컴파일 타임에 검증합니다.#include #include // 열거형 타입 전용 Concepttemplateconcept EnumType = std::is_enum_v;// 열거형 값을 기본 정수형으로 변환하는 제네릭 함수templateconstexpr a.. 2025. 8. 3. Modern C++ : enum vs enum class (98, 11) enum vs enum class 개요C++98의 전통적 enum과 C++11에서 도입된 enum class(Scoped enum)를 비교하여, 각 방식의 특징, 장단점 및 사용 시 유의점을 정리한다. C++ 버전별 주요 키워드 도입 시기C++98: enumC++11: enum class Name : UnderlyingType (기반 타입 지정) 내용 설명전통적 enum (C++98)암시적 정수 변환 허용 → 타입 안전성 부족열거자 이름이 전역 범위 오염 → 충돌 위험기반 타입 지정 불가 (기본 int)enum class (C++11)암시적 변환 금지 → 강한 타입 체킹열거자 Scoped → Color::RED 형태로 사용기반 타입 지정 가능 (enum class Color : uint8_t)static.. 2025. 8. 2. Modern C++ 둘러보기 클래식 C++에 익숙해서 모던 C++ 변화 시기에 바닥에 뭍어두고 Rust 학습을 했었는데 흐릿해지니 충격도 줄어드는 것 같다.C++ 26에서 큰 변화가 있을거라는데, 메모리 안정성을 높인다니. 여전하다.그래도 20대 전후를 함께한 친구인데 언어 비교를 위해 다시 파내본다. Modern C++ Features (C++11, C++14, C++17, C++20, C++23)이 문서는 C++11부터 C++23까지 표준에 도입된 주요 언어 및 라이브러리 기능을 정리하고, 예제 코드를 통해 사용법을 설명합니다. 목차C++11auto 키워드범위 기반 for 문스마트 포인터 (std::unique_ptr, std::shared_ptr)nullptr람다 표현식이동 시맨틱 (rvalue 참조, std::move)기타:.. 2025. 8. 1. 이전 1 2 3 다음