블로그
-
C++ extern과 링키지: 전역 변수 공유, 내부·외부 연결, C 함수 연동
전역 변수를 여러 .cpp에서 공유하려면 헤더에는 extern 선언만, 정의는 한 파일에만 두어야 합니다. 내부·외부 연결의 차이, extern과 static 비교, const 전역의 기본 링키지, extern "C"로 C 라이브러리와 연동하는 방법을 예제로 봅니다.
-
C++ Facade 패턴: 복잡한 서브시스템 앞에 단순한 진입점 두기와 Pimpl·CRTP 변형
C++ Facade 패턴으로 복잡한 서브시스템을 단순한 인터페이스로 감싸는 방법. 멀티미디어·데이터베이스 예제, Pimpl 컴파일 방화벽, 가상 디스패치 비용, 템플릿·CRTP 기반 정적 파사드를 정리합니다.
-
C++ Factory 패턴 비교: Simple Factory, Factory Method, Abstract Factory, 자동 등록
C++ Factory 패턴으로 객체 생성을 캡슐화하는 방법. Simple Factory, Factory Method, Abstract Factory의 차이, 자동 등록 팩토리, 플러그인 시스템 예제를 정리합니다.
-
C++ filesystem::status로 파일 종류·권한·수정 시간 확인하기
std::filesystem::status와 symlink_status가 반환하는 file_status로 파일 종류와 권한을 확인하는 방법, perms 비트 검사, 수정 시간과 디스크 공간 조회, 심볼릭 링크와 존재 확인에서 생기는 함정을 예제로 다룹니다.
-
C++ 예외 처리: try/catch/throw, 예외 안전성, 언제 예외를 쓰나
예외를 던질지 에러 코드를 반환할지 결정하는 기준부터, 예외를 참조로 잡아야 하는 이유, 소멸자에서 던지면 안 되는 이유, RAII로 예외 안전성을 지키는 법, 스택 풀기와 noexcept의 실제 효과까지 C++ 예외 처리를 코드로 짚습니다.
-
C++ 예외 비용: Zero-Cost 모델의 의미, throw 비용, noexcept와 이동 생성자
C++ 예외의 Zero-Cost 모델이 실제로 무엇을 의미하는지, 정상 경로와 예외 경로의 비용 차이, noexcept가 이동 생성자 성능에 미치는 영향, 그리고 예외를 제어 흐름으로 남용했을 때의 실제 성능 손실을 벤치마크와 함께 정리합니다.
-
C++17 실행 정책 seq·par·par_unseq: 병렬 알고리즘과 데이터 레이스 함정
C++17 실행 정책으로 병렬 알고리즘을 구현하는 방법. seq, par, par_unseq 정책 비교, std::transform, std::sort 병렬화 실전 예제와 데이터 레이스·오버헤드 함정을 정리합니다.
-
C++ 동적 초기화와 정적 초기화 순서 문제: Meyers 싱글톤·constinit으로 해결하기
C++ 전역·정적 변수가 런타임에 초기화되는 동적 초기화를 정적 초기화와 비교하고, 번역 단위 간 초기화 순서 문제와 순환 의존성, 소멸 순서 문제를 Meyers 싱글톤, 지연 초기화, constinit으로 해결하는 방법을 설명합니다.
-
C++ enum class: 밑바닥 타입, 비트 플래그, 문자열 변환 패턴
C++11 enum class의 스코프와 암시적 변환 차단, 밑바닥 타입과 ABI·직렬화, 문자열 변환 패턴, 비트 플래그 연산자 오버로딩, 범위 밖 정수 캐스팅과 Windows ERROR 매크로 충돌 같은 함정을 예제로 정리합니다.
-
C++ CRTP: 가상 함수 없이 정적 다형성 구현하기와 C++23 deducing this
C++ CRTP(Curiously Recurring Template Pattern)로 가상 함수 없이 정적 다형성을 구현하는 방법을 카운터 믹스인, 비교 연산자 자동 생성, 싱글톤, 체이닝 인터페이스 예제로 정리합니다. 가상 함수와의 성능 비교와 캐스팅·순환 의존 함정까지 다룹니다.