모던 C++ 심화
문법 다음에 만나는 메모리·수명·소유권 문제를 이해하고, RAII와 STL로 재사용 가능한 표준 C++ 프로그램을 설계합니다.
과정의 학습 의도
이 과정은 Unreal Engine 사용법을 가르치는 과정이 아닙니다. 모던 C++에서 익힌 C++11~17 문법과 STL 기초를 바탕으로 게임, 서버, 도구 프로그램에 공통으로 적용되는 표준 C++17의 객체 수명과 자원 관리 규칙을 다룹니다. 포인터를 문법 기호로 외우지 않고 주소가 언제 유효한지 추적하며, new와 delete의 실패를 RAII와 스마트 포인터로 고칩니다. 이후 복사·이동·STL·오류 처리·동시성을 하나의 설계 기준으로 연결합니다.
선수 지식
- C++ 변수, 조건문, 반복문, 함수와 클래스의 기본 문법
- 모던 C++의
auto, 람다,vector,optional과unique_ptr입문 - 소스 파일을 C++17로 컴파일하고 콘솔 프로그램을 실행한 경험
- 오류 메시지에서 파일명과 줄 번호를 찾을 수 있는 정도의 개발 환경 사용 경험
문법이 아직 낯설다면 Python 과정으로 제어 흐름을, Java 과정으로 클래스와 컬렉션을 먼저 익힐 수 있습니다. 컨테이너의 성능 기준은 자료구조 · 알고리즘에서 확장합니다.
기존 과정과의 실제 연결
- Python의 클래스와 인스턴스, 예외 처리에서 객체와 실패 흐름을 익힌 뒤 C++의 명시적 수명·소유권 차이를 비교합니다.
- Java의 클래스와 객체, 예외와 입력 검증, List 컬렉션에서 배운 참조·컬렉션 의미를 C++ 값·참조·컨테이너 계약과 연결합니다.
- 자료구조 과정의 배열과 ArrayList, 해시와 HashMap, 정렬과 Comparator는 14~16강의 컨테이너·알고리즘 선택 근거가 됩니다.
- Unreal 과정의 Reflection과 UObject, 객체 참조와 수명, Unreal 컨테이너는 7·8·14~17강에서 표준 C++와 엔진 수명 모델의 차이를 확인하는 후속 자료입니다.
권장 환경
- 언어 기준: C++17
- Windows: Visual Studio Community의 MSVC 또는 C++17을 지원하는 clang++/g++
- 빌드: Debug와 Release 구성을 구분하고 경고 수준을 높게 설정
- 검증: 사용 가능한 환경에서 AddressSanitizer와 UndefinedBehaviorSanitizer 사용
컴파일러별 옵션과 Sanitizer 지원 범위는 다를 수 있습니다. 강의의 예제는 표준 C++17을 기준으로 하며 특정 엔진이나 유료 라이브러리를 요구하지 않습니다.
최종 결과물
콘솔 기반 작업 큐와 리소스 관리 도구를 만듭니다. Task가 이름·우선순위·상태를 값으로 보관하고, TaskService가 등록·조회·완료 전환을 조정합니다. ITaskStorage가 저장 방식을 감추고 FileLogger가 파일 자원을 RAII로 관리합니다. 소유권 표와 클래스 책임표를 먼저 작성한 뒤 unique_ptr, vector, unordered_map, 표준 알고리즘, 오류 결과와 테스트를 단계적으로 통합합니다.
전체 커리큘럼
| 구간 | 강의 | 학습 의도 |
|---|---|---|
| 수명과 주소 | 1~5 | 실제 버그에서 출발해 메모리 영역, 포인터, 참조, 동적 할당의 위험을 추적 |
| 소유권과 값 의미 | 6~13 | RAII, 스마트 포인터, 복사·이동, Rule of Zero, const와 전달 방식 설계 |
| STL과 표현력 | 14~18 | 컨테이너, 알고리즘, 람다, optional·variant를 요구사항에 맞게 선택 |
| 실패와 확장 | 19~23 | 오류 모델, 템플릿, 안전한 문법, 동시성과 도구 기반 디버깅 |
| 최종 실습 | 24 | 작업 큐·저장소·파일 로그를 책임과 소유권이 보이는 구조로 완성 |
COURSE ORIENTATION
과정 선택 안내
- 학습 대상
- 모던 C++ 이후 객체 수명·소유권·RAII·오류 처리·동시성을 실제 C++17 설계로 확장하려는 학습자
- 선수지식
- 모던 C++ 과정 또는 auto·람다·vector·optional·unique_ptr 입문 경험
- 최종 결과물
- 저장 실패와 소유권 테스트를 포함한 작업 큐·리소스 관리 콘솔 도구