C++ 은 빠른 고성능 언어로서 많은 분야에서 사용되고 있습니다. 특히 AI 시대 실시간으로 빠르게 처리하기 위한 복잡한 알고리즘 구현에 널리 쓰이고 있습니다. 이 글에서는 C++ 개발자 로드맵에 대해 알아보도록 하겠습니다.
목차
ToggleC++ 소개
- C++란 무엇인가요?
- 왜 C++인가요?
- C vs C++
C++ 설정하기
- C++ 설치하기
- 코드 편집기
- C++에서의 첫 번째 프로그램
C++의 기본 연산
- C++에서의 산술 연산자
- C++에서의 논리 연산자
- C++에서의 반복문
- 비트 연산
함수
- 연산자
- 람다
데이터 타입
- RTTI (런타임 타입 정보)
- 동적 타입
- 정적 타입
포인터와 참조
- 참조(References)
- 메모리 모델
- 객체의 수명
- weak_ptr
- shared_ptr
- unique_ptr
- 스마트 포인터(Smart Pointers)
- New/delete 연산자
- Raw 포인터
- 메모리 누수
코드베이스 구조화
- 헤더 파일과 CPP 파일로 코드 분리
- 전방 선언(Forward Declaration)
- 범위(Scope)
- 네임스페이스
구조체와 클래스
- 규칙의 제로, 다섯, 세 (Rule of Zero, Five, Three)
- 다중 상속
- 다이아몬드 상속
- 객체 지향 프로그래밍
- 함수 오버로딩
- 정적 다형성
- 가상 메서드
- 가상 테이블
- 동적 다형성
예외 처리
- 접근 위반
- 예외
- 종료 코드
언어 개념
- auto (자동 타입 추론)
- 타입 캐스팅
- static_cast
- const_cast
- dynamic_cast
- reinterpret_cast
- 정의되지 않은 동작(UB)
- 인수 종속 검색(ADL)
- 이름 맹글링
- 매크로
표준 라이브러리 + STL
- 이터레이터(Iterators)
- 알고리즘
- 멀티스레딩
- iostream
- 날짜/시간
- 컨테이너(Containers)
템플릿
- 변수 템플릿
- 템플릿 특수화
- 완전 템플릿 특수화
- 부분 템플릿 특수화
- 타입 특성(Type Traits)
- SFINAE (Substitution Failure Is Not An Error)
관용구(Idioms)
- RAII
- Pimpl (Pointer to Implementation)
- CRTP (Curiously Recurring Template Pattern)
- 복사 불가 / 이동 불가
- Erase-Remove 관용구
- 복사와 스왑
- 복사 시 쓰기 (Copy on Write)
표준
- C++ 11/14
- C++ 17
- C++ 20
- 최신 표준
- C++ 0x
디버거
- 디버거 메시지 이해하기
- 디버깅 심볼
- WinDBG
- GDB
컴파일러
- 컴파일러 단계 이해하기
- 다양한 컴파일러와 그들의 특징
- Clang++/LLVM
- Intel C++
- MSVS C++
- GCC
- MinGW
빌드 시스템
- CMake
- Makefile
- Ninja
패키지 관리자
- vcpkg
- Spack
- Conan
- NuGet
라이브러리 사용하기
- 라이브러리 포함하기
- 라이센싱
라이브러리
- Boost
- OpenCV
- POCO
- protobuf
- gRPC
- TensorFlow
- pybind11
- spdlog
- OpenCL
- fmt
- range-v3
프레임워크
- gtest/gmock
- Qt
- Catch2
- Orbit Profiler
- PyTorch C++