블로그
-
C++17 constexpr 람다: 암시적 constexpr 조건과 컴파일 타임 룩업 테이블
C++17부터 람다가 조건을 만족하면 암시적으로 constexpr이 되는 규칙을 설명하고, 팩토리얼·거듭제곱·배열 초기화 같은 컴파일 타임 계산, 타입 검사와 조건부 컴파일, 룩업 테이블을 만드는 활용 패턴을 다룹니다.
-
C++ STL 컨테이너: 연산별 성능 비교와 상황별 선택 기준
vector, map, unordered_map, deque, list의 내부 구조와 반복자 무효화 규칙, 메모리 할당 전략, 캐시 성능 차이를 측정 방법과 함께 비교하고 상황별 컨테이너 선택 기준을 정리합니다.
-
C++ 복사 생성자와 이동 생성자: 호출 시점, Rule of Five와 Rule of Zero
C++ 복사 생성자와 이동 생성자가 호출되는 시점을 동적 배열, 파일 핸들러, 간단한 스마트 포인터 예제로 보여 주고, Rule of Five와 Rule of Zero, 얕은 복사·자기 대입·noexcept 누락 문제를 설명합니다.
-
C++ CRTP: 가상 함수 없이 정적 다형성 구현하기와 C++23 deducing this
C++ CRTP(Curiously Recurring Template Pattern)로 가상 함수 없이 정적 다형성을 구현하는 방법을 카운터 믹스인, 비교 연산자 자동 생성, 싱글톤, 체이닝 인터페이스 예제로 정리합니다. 가상 함수와의 성능 비교와 캐스팅·순환 의존 함정까지 다룹니다.
-
C++ 댕글링 레퍼런스: 지역 변수 반환·임시 객체·컨테이너 요소에서 생기는 원인과 탐지
C++ 댕글링 레퍼런스가 발생하는 네 가지 근본 원인(지역 변수 반환, 임시 객체, 컨테이너 요소, 해제된 메모리)을 실전 예제로 정리합니다. 반복자 무효화, 스마트 포인터, 람다 캡처, 메서드 체이닝 함정과 탐지·해결 방법까지 다룹니다.
-
C++로 자료구조 직접 구현하기: 연결 리스트·이진 탐색 트리·해시 테이블·스택·큐
C++로 연결 리스트, 이진 탐색 트리, 해시 테이블, 스택, 큐를 직접 구현하며 노드 연결과 삽입·삭제가 내부에서 어떻게 일어나는지 설명하고, LRU 캐시와 인접 리스트 그래프 예제로 응용합니다.
-
C++20 날짜 파싱과 서식: std::format·chrono::parse·zoned_time 사용법
C++20 std::format과 std::chrono::parse로 날짜·시간을 출력하고 파싱하는 방법. 서식 지정자, 파싱 실패 처리, zoned_time 시간대 변환, 로그 타임스탬프 예제까지 정리합니다.
-
C++ Decorator 패턴: 상속 대신 감싸서 기능 붙이기 (스트림·로깅·포매터 예제)
C++ Decorator 패턴으로 상속 없이 객체를 감싸 기능을 덧붙이는 방법을 스트림 데코레이터, 로깅 시스템, 텍스트 포매터 예제로 구현하고, 빌더 스타일로 여러 데코레이터를 조합하는 패턴을 설명합니다.
-
C++ 기본 인자 규칙: 헤더에만 두는 이유와 가상 함수에서 생기는 함정
C++ 기본 인자를 오른쪽부터 채워야 하는 규칙, 헤더 선언에만 기본값을 두고 재선언에서 반복하면 안 되는 이유, 가상 함수에서 기본값이 정적 타입 기준으로 결정되는 함정, 오버로딩과 충돌하는 경우를 예제로 설명합니다.
-
C++ = default와 = delete: 특수 멤버 함수 제어와 복사 금지·이동 전용 타입
C++11 = default와 = delete로 특수 멤버 함수를 명시적으로 제어하는 방법을 설명합니다. 복사는 막고 이동만 허용하는 리소스 래퍼, 힙 할당 금지, 특정 타입 변환 차단, 싱글톤 예제와 Rule of Zero를 다룹니다.