블로그
-
C++ auto 타입 추론 실수: 참조·const가 떨어지는 복사, vector<bool> 프록시, 중괄호 추론
auto가 참조와 최상위 const를 떼어 내 의도치 않은 복사가 생기는 문제부터 초기화 누락, vector<bool> 프록시, 중괄호 초기화 추론까지 auto 관련 에러 8가지를 짚고, auto&·const auto&·auto&&를 고르는 기준을 정리합니다.
-
C++ 초보자가 자주 하는 실수 Top 15 | 컴파일 에러부터 런타임 크래시까지
C++ 입문자가 가장 자주 겪는 실수(클래스 끝 세미콜론, 헤더 누락, const 참조, 댕글링 포인터, 정수 나눗셈, unsigned 언더플로 등)를 실제 GCC·Clang·MSVC 에러 메시지와 함께 정리하고, 왜 그런 규칙이 있는지와 Sanitizer로 런타임 버그를 잡는 법을 설명합니다.
-
C++와 Python 중 무엇을 먼저 배울까: 속도, 학습 난이도, 취업 시장 비교
첫 언어로 C++와 Python 중 무엇을 고를지 실행 속도, 학습 곡선, 쓰이는 분야와 취업 시장을 기준으로 비교합니다. 같은 작업을 두 언어로 작성한 코드, 피보나치 계산 벤치마크, 게임·시스템 개발과 데이터 분석 등 목표별 추천 경로를 담았습니다.
-
C++ 타입 변환: 암시적 변환, static_cast·dynamic_cast·const_cast·reinterpret_cast, explicit
C++ 타입 변환 정리. 암시적 변환과 명시적 변환, static_cast·dynamic_cast·const_cast·reinterpret_cast의 용도와 차이, 변환 생성자와 explicit, 변환 연산자를 예제로 다룹니다.
-
C++11 중괄호 초기화: narrowing 방지, Most Vexing Parse, vector<int>{10}과 (10)의 차이
C++11 중괄호 초기화가 기본 타입, 배열, 구조체, 컨테이너를 같은 문법으로 초기화하면서 narrowing 변환을 컴파일 에러로 막고 Most Vexing Parse를 피하는 방식을 설명합니다. vector<int>{10}과 (10)이 다른 이유, auto와 함께 쓸 때의 함정도 다룹니다.
-
X-Macro로 중복 없애기: enum↔문자열 매핑, 에러 코드 표, 상태 머신, 커맨드 테이블
enum과 문자열 배열을 따로 정의하다 한쪽만 고쳐 어긋나는 문제를 X-Macro로 한 곳에서 관리하는 방법을 보여줍니다. enum↔문자열 양방향 변환과 개수 자동 계산, 에러 코드·HTTP 상태 표, 상태 머신 전이 테이블, CLI 커맨드 디스패치 예제를 다룹니다.
-
C++20 ranges의 개념 계층: range 요건, input·forward·random_access_range, CPO 설계
begin()과 end()만 있으면 range가 되는 최소 요건부터 input_range, forward_range, random_access_range로 계층이 나뉜 이유, std::ranges::begin이 평범한 함수가 아닌 커스터마이제이션 포인트 객체로 설계된 까닭을 C++20 코드로 설명합니다.
-
C++ std::ratio: 컴파일 타임 분수 연산과 chrono 단위 표현 원리
std::ratio로 분수를 타입에 담아 ratio_add, ratio_multiply 같은 연산과 약분을 컴파일 타임에 끝내는 방법, chrono::duration이 milli와 micro로 단위를 표현하는 원리를 보여주고, 단위 변환과 프레임 레이트 예제, 연산 중 오버플로우 문제를 다룹니다.
-
C++ 성능 최적화 순서: 복사 제거, 할당 줄이기, 캐시 지역성, 컴파일러 옵션
값 전달을 참조와 move로 바꾸고, reserve와 객체 풀로 할당을 줄이고, 데이터 지역성을 살려 캐시 미스를 줄이는 순서로 C++ 코드를 빠르게 만드는 방법을 설명합니다. 컴파일 옵션, 룩업 테이블, SIMD 예제와 gprof, Callgrind, perf 사용법도 담았습니다.
-
C++ 객체 슬라이싱: 파생 부분이 잘려 나가는 네 가지 경우와 다형성 지키는 법
파생 객체를 기반 클래스 값으로 넘기거나 반환하고, 대입하거나 vector에 담는 네 가지 경우에 파생 부분이 잘려 나가는 이유를 메모리 레이아웃으로 보여주고, 참조·포인터·스마트 포인터와 복사 방지로 다형성을 지키는 법을 설명합니다.