C++ / Tour
-
cpp-ranges
C++20 ranges는 구간을 가벼운 view로 다루어 원소를 복사하지 않고 필터(filter)·변환(transform)·정렬(sort)을 합성하게 하는 표준 라이브러리입니다.
-
C++20 jthread stop_token 사용법, 스레드 취소를 어떻게 하나
C++20에서 추가된 std::jthread는 소멸 시 자동으로 join()을 호출하고, 내부에 std::stop_source를 들고 있어 협력적 취소(cooperative cancellation) 신호를 함께 전달합니다. 이 글은 cpprefere…
-
A Tour of C++ 1.1 — C++를 볼 때 무엇부터 잡나
A Tour of C++ 1.1 Introduction. 문법만 외우기 전에 표기법·타입·메모리·계산 모델과 프로그램 구조를 함께 보는 이유를 정리합니다.
-
C++ 타입 선택 조언: struct·class·enum·variant 언제 쓰나 (Tour 2.6)
한 줄 답: C++에서 기본 타입만으로 의미 표현이 부족할 때, 관련 데이터를 묶고 잘못된 상태를 방지할 수 있도록 용도에 맞는 사용자 정의 타입(struct, class, enum, variant)을 설계하고 선택합니다.
-
C++ 선언 vs 정의: 호출에 본문이 꼭 위에 있어야 할까? (Tour 3.1)
한 줄 답: C++에서 선언은 컴파일러에게 이름과 타입을 알려 호출을 가능하게 하고, 정의는 실제 동작 본문을 제공하여 인터페이스와 구현의 분리를 이룹니다.
-
C++ 분할 컴파일: 헤더 #include 비용과 C++20 모듈 차이 (Tour 3.2)
한 줄 답: C++의 분할 컴파일 방식에서 기존 #include 헤더는 중복 파싱과 의존성 문제를 일으키지만, C++20에 도입된 모듈(Modules)은 단 1회 컴파일과 매크로 격리를 통해 이를 해결합니다.
-
C++ std::atomic, 데이터 레이스를 막는 법
std::atomic은 한 변수에 대한 연산을 원자적으로 만들어 데이터 레이스를 피하게 하는 C++ 타입입니다.
-
C++ 1.8 Tests 정리: 조건식, short-circuit, if 초기화, switch fall-through, vector::size() | slug: 20260917-tour-cpp-1-8-tests | series: A Tour of C++ 1.8
A Tour of C++ §1.8 Tests는 선택과 반복을 어떻게 표현하는지를 다룹니다. C++는 if, switch, while, for로 분기와 루프를 만들고, 그 조건 자리에서는 정수·포인터·논리 연산·삼항 연산자까지 같은 방식으로 “실행할지…
-
C++ union은 왜 위험한가? active member부터 std::variant까지
한 줄 답: union은 여러 멤버가 하나의 메모리 공간을 공유해 크기를 줄이는 구조이지만, 지금 어느 멤버가 유효한지(active member)를 프로그래머가 직접 추적해야 하는 위험이 따릅니다. C++17부터는 이를 타입 안전하게 관리하는 std…
-
C++ concepts, 템플릿 인자를 제약하는 법
C++20 concepts는 템플릿 인자가 만족해야 하는 요구를 이름으로 적는 제약입니다.
-
C++ 코딩 습관, Tour 1.10 Advice 정리
C++ 코딩 습관은 새 문법 나열이 아니라, 주석·초기화·이름·범위·상수를 일관되게 쓰는 규칙 모음입니다.
-
A Tour of C++ 1.9: 하드웨어 매핑과 포인터, 참조의 차이
C++ 하드웨어 매핑(Mapping to Hardware)의 핵심은 기본 연산이 단일 기계 명령(machine instruction)으로 직접 변환되어 추가적인 런타임 오버헤드 없이 하드웨어 자원을 활용한다는 것입니다. 대입 연산은 메모리 칸의 값을…
-
A Tour of C++ 2.1–2.2|user-defined type과 struct Vector
Stroustrup은 내장 타입(built-in types)을 다음 세 가지로 구성된다고 정의합니다.
-
C++ class, 생성자로 불변식을 잡는 법
C++ class는 공개 인터페이스와 비공개 구현을 나누고, 생성자로 객체가 만들어지는 즉시 불변식을 잡게 합니다.
-
C++ std::variant, 여러 타입 중 하나를 담는 법
std::variant는 지정한 타입 목록 중 하나를 한 객체에 담는 C++17 유틸리티이며, 태그 있는 유니온이 필요할 때 씁니다.
-
C++ 1.8 Tests 정리: 조건식, short-circuit, if 초기화, switch fall-through, vector::size() | slug: 20260912-cpp-1-8-tests-merged | series: A Tour of C++ 1.8
A Tour of C++ §1.8 Tests는 선택과 반복을 어떻게 표현하는지를 다룹니다. C++는 if, switch, while, for로 분기와 루프를 만들고, 그 조건 자리에서는 정수·포인터·논리 연산·삼항 연산자까지 같은 방식으로 “실행할지…
-
C++ std::string_view, 문자열을 복사 없이 보는 법
std::stringview는 문자 시퀀스를 소유하지 않고 가리키는 C++17 뷰이며, 문자열을 복사 없이 읽을 때 씁니다.
-
C++ std::span, 배열을 복사 없이 넘기는 법
std::span은 연속된 원소를 소유하지 않고 가리키는 C++20 뷰이며, 배열이나 컨테이너를 복사 없이 함수에 넘길 때 씁니다.
-
C++ std::expected, 실패를 예외 없이 다루는 법
C++의 std::expected는 성공 값 또는 오류 값을 한 객체에 담는 C++23 유틸리티이며, 예외를 던지지 않고 실패를 반환할 때 씁니다. 호출자는 성공 여부를 확인한 뒤 값 또는 오류를 명시적으로 처리할 수 있습니다.
-
C++ std::format, 포맷 문자열로 출력하는 법
std::format은 C++20부터 제공되는 <format> 헤더의 함수로, 포맷 문자열에 맞춰 인자를 형식화한 결과 문자열을 반환합니다. 문자열 결과가 필요하고 각 값의 표시 형식을 포맷 문자열로 정하고 싶을 때 사용합니다.
-
C++ volatile, 임베디드에서 쓰는 이유
volatile은 접근을 관측 가능한 부수 효과로 다루어 컴파일러가 죽은 코드처럼 지우거나 같은 스레드의 다른 관측 가능 부수 효과와 순서를 바꾸지 못하게 하는 한정자입니다. MMIO·ISR·시그널 핸들러처럼 프로그램 밖의 기록이 바뀌는 위치에 쓰며, 뮤텍스·원자 연산·스레드 안전의…
-
C++ std::optional, 값이 없을 때 예외 없이 다루는 법
C++ std::optional은 값이 있을 수도 없을 수도 있는 C++17 래퍼이며, hasvalue와 valueor로 빈 상태를 예외 없이 확인합니다. 값이 필요한 경우에만 value()를 선택하고, 빈 상태에서는 기본값 반환이나 조건 분기를 사용합니다.
-
C++ std::move, 복사를 줄이는 이유
std::move는 인자를 rvalue 참조로 캐스트하는 유틸리티이며, 그 자체로는 자원을 옮기지 않습니다. 이동은 이동 생성자나 이동 대입처럼 rvalue를 받는 오버로드가 선택될 때 이뤄지며, 복사 대신 자원을 넘길 수 있습니다. 이 글은 cppreference의 이동 유틸리티와…
-
C++ magic_enum, enum 이름을 문자열로 얻는 방법
C++ enum은 표준으로 이름을 문자열로 못 바꾸고, C++ magicenum은 컴파일 타임 매크로/템플릿으로 이름과 값을 연결합니다. 따라서 enumname과 enumcast를 사용하면 enum 값의 이름 조회와 문자열·정수에서 enum으로 되돌리는 작업을 다룰 수 있지만…
-
C++ constexpr, 컴파일 타임에 계산하는 이유
constexpr은 변수나 함수의 값을 컴파일 타임에 평가할 수 있음을 선언하는 지정자입니다. 객체 선언에서는 const를 함의하고, 상수 식이 필요한 위치에 쓸 수 있지만, 인수가 상수가 아니면 같은 함수가 실행 시간에 호출될 수도 있습니다. 이 글은 cppreference의 상수…
-
C++ 기술면접 질문 10가지|임베디드 개발자가 꼭 준비할 핵심 개념
임베디드 C++ 기술면접의 핵심은 문법을 외웠는지가 아니라, 각 기능이 메모리·실행 시간·객체 수명·동시성에 어떤 영향을 주는지 설명할 수 있는지야. virtual, 객체 복사, volatile, 상수 표현식, RAII, 스마트 포인터, 메모리 정렬, undefined…