블로그
-
C++ 함수 처음 만들기: 선언과 정의, 값·참조 전달, 오버로딩, 기본 인자 (예제 10개)
함수를 처음 만들 때 필요한 선언과 정의의 분리, 값·참조·포인터 전달의 차이, return 규칙, 기본 매개변수, 오버로딩을 예제 10개로 익힙니다. 지역 변수 주소 반환, 오버로딩 모호성, 선언 전 호출 같은 초보자 실수도 짚습니다.
-
C++ queue와 stack: 컨테이너 어댑터 사용법과 BFS·DFS 활용
C++ STL의 stack·queue·priority_queue 사용법과 내부 동작 원리를 비교하고, DFS·BFS·작업 스케줄링 실전 예제와 커스텀 비교자 설정 등 흔한 컴파일 에러 해결법을 정리합니다.
-
HTTP 프로토콜: HTTP/1.1·HTTP/2·HTTP/3 차이, 연결 관리, 캐싱, 보안 실전
HTTP 메서드의 안전성과 멱등성, 상태 코드와 주요 헤더, HTTP/1.1·2·3의 프레이밍과 HOL 블로킹 차이, Keep-Alive와 연결 풀, Cache-Control·ETag 기반 캐시 검증을 프로덕션 관점으로 설명합니다.
-
C++ namespace 심화: using 선언 vs 지시문, 익명 namespace, 인라인 namespace, ADL
C++ namespace의 using 선언과 지시문 차이, 익명 namespace와 파일 범위 static 비교, 별칭, 인라인 namespace를 이용한 버전 관리, ADL과 swap 관용구, 헤더에서 피해야 할 패턴과 프로젝트 구조에 맞춘 배치를 설명합니다.
-
C++ Mixin 패턴: 템플릿 상속으로 로깅·카운팅 기능 조합하기
템플릿 매개변수로 받은 기반 클래스를 상속해 로깅·카운팅 같은 기능 조각을 필요한 클래스에만 조합하는 C++ Mixin 패턴을 다룹니다. 다중 Mixin, CRTP Mixin, 조건부 기능 선택, 메서드 체이닝을 예제로 보여 줍니다.
-
C++ std::locale과 facet: 숫자·통화·날짜를 지역 형식으로 출력하기
std::locale과 facet으로 숫자 천 단위 구분, 통화, 날짜 출력을 지역에 맞게 바꾸고 isalpha 같은 문자 분류를 locale 기준으로 처리하는 방법을 예제로 보여 주며, 시스템에 locale이 설치되지 않았을 때의 예외도 다룹니다.
-
C++ Expression Templates: 벡터 연산의 임시 객체를 없애는 지연 평가 구현
a + b + c 같은 벡터 연산이 매 단계 임시 객체를 만드는 문제를 Expression Templates로 풀어, 연산을 식 트리로 쌓아 두었다가 대입 시점에 한 번의 루프로 평가하는 방법을 구현합니다. auto로 받았을 때의 댕글링과 앨리어싱 함정도 짚습니다.
-
C++ constexpr 함수: 컴파일 타임 평가 조건과 C++11·14·17 제약 변화
constexpr 함수가 상수 표현식 문맥에서만 컴파일 타임에 평가되는 규칙을 설명하고, C++11의 단일 return 제약에서 C++14·C++17로 완화된 내용, constexpr 클래스, 정적 변수·가상 함수 사용 시 생기는 오류를 예제로 다룹니다.
-
C++ 캐스팅 4가지: static_cast·dynamic_cast·const_cast·reinterpret_cast 언제 쓰나
C++의 4가지 캐스트(static_cast, dynamic_cast, const_cast, reinterpret_cast)가 각각 언제 안전하고 언제 위험한지, C 스타일 캐스트(T)x가 왜 지양되는지, dynamic_cast 실패를 무시했을 때의 크래시까지 실전 예제로 정리합니다.
-
C++ Adapter 패턴: 객체 어댑터 vs 클래스 어댑터로 레거시·외부 API 감싸기
C++에서 호환되지 않는 인터페이스를 연결하는 Adapter 패턴을 조합 방식의 객체 어댑터와 다중 상속 방식의 클래스 어댑터로 구현해 비교하고, 레거시 API 감싸기, 팩토리·템플릿 어댑터, 결제 시스템 예제를 다룹니다.