최고 수준의 오픈소스로 부터 배우는

Advanced C++ with C++14

수강대상

C++의 고급 기술을 배우고자 하는 개발자
C++ 기반의 오픈소스를 분석하고자 하는 개발자

선수과정

기초 C++ 프로그래밍
기본 자료구조

강의환경

Visual C++ 2015 Express
gcc 4.9.2
CLang 3.5


◼︎문법 하나하나를 깊이 있고 다양한 관점에서 배우면서 언어에 대한 통찰력을 얻을 수 있도록 합니다.

C++을 공부하는 많은 분들은 처음에는 C++ 기본 서적을 읽은 후 다음으로 effective C++이나 The C++ Programming 같은 서적에 공부 하지만 이해하기가 쉽지 않습니다. 또한 기본 문법만을 가지고는 C++분야의 다양한 오픈소스를 이해 하기 어렵습니다.

본 과정에서는 다양한 C++의 고급 문법을 다양한 관점에서 깊이 있게 다루게 됩니다. Effective C++, Modern C++ Design, Inside C++ Object등 C++분야의 바이블이라고 하는 서적에서 항상 다루는 다양한 이야기를 배우게 됩니다.


◼︎C++ 프로그램에서 자주 사용되는 관용적인 기법들 그리고 용어(IDioms)를 다루게 됩니다.

C++에서는 자주 사용되는 기법이 많이 있습니다. 그리고 이런 기법에는 재미 있는 이름이 붙어 있는 경우가 많습니다.

본 과정에서는 RAII, CRTP, Thin Template, PIMPL, NRVO, 간접층, Trivial, Traits 등 많은 IDioms를 배울수 있습니다.


◼︎C++11/14 기반의 최신 문법을 개념을 배웁니다.

2011년 표준화 되고 2014년 개정판이 나온 C++의 최신 내용을 배우게 됩니다.

C++11/14의 가장 중요한 핵심인 Move semantics, Perferect Forwarding, Lambda, Variadic Template 등의 중요 내용을 깊이 있는 시각에서 배우게 됩니다.문법 뿐 아니라 새로운 라이브러리, 그리고 새로운 개념 까지 깊이 있고 다양한 관점에서 배우게 됩니다.

이미 수많은 유명 오픈소스들은 C++11/14를 사용하고 있습니다.


◼︎template의 고급 기술을 배우고 STL 라이브러리를 직접 구현하면서 Generic 프로그램의 원리와 활용기법을 배웁니다.

template 서적의 바이블로 통하는 "C++ Template Complate Guide" 서적의 내용을 기반으로 template 고급 문법, template 기반의 디자인 기법과 관용구를 배웁니다.

그리고, STL의 핵심요소인 반복자, 알고리즘, 컨테이너의 3요소를 직접 구현해 보면서 STL의 Framework을 완벽히 이해 하도록 구성되어 있습니다. 또한, allocator, 바인더, 삽입 반복자등 대부분의 STL요소를 직접 구현해 보면서 그 Generic 프로그램의 원리를 배울 수 있도록 설계 되었습니다.

또한 C++11에 추가된 다양한 라이브러리와 boost 에 대해서도 배우게 됩니다.


◼︎WebKit, Android, boost, STL, ACE 등의 유명 오픈 소스에서 부터 발췌한 코드를 예제로 사용하므로서 실무에 바로 응용 가능한 많은 기술을 배울수 있습니다.

수업에서 사용되는 예제는 대부분 stl,boost,poco,webkit,android,ace 등 많은 오픈소스에서 발췌한 코드를 사용합니다. 최고의 오픈소스들이 사용하는 실전 코드를 통해 개발자의 코드 능력을 향상 시킬수 있습니다.


◼︎ 본 과정에서는 아래의 내용은 다루지 않습니다.

- 본 과정에서는 C++의 기본 문법은 다루지 않습니다. C++ 기본 문법을 아시는 분만 수강하시기 바랍니다.

- 본 과정에서는 객체지향 디자인에 대해서는 자세히 다루지 않습니다. 객체지향 디자인에 관심이 있으신 분은 본원의 "디자인패턴과 라이브러리 설계의 기술" 과정을 수강하시면 됩니다..

  • Section1. C++ 문법 고급
    • 멤버 함수의 호출원리(this call)
    • 객체의 복사(깊은 복사, 참조개수, 복사 금지, 소유권관리)
    • 객체의 생성(new, placement new, allocator, memory pooling)
    • 간접층의 도입(proxy기반의 설계, 변환의 활용)
    • Exception safety
    • Inline 함수, 함수와 함수객체, 범용성과 효율성, 단위 전략 기반의 설계
    • 상수 함수와 상수객체, const_cast, mutable
    • 임시객체와 참조자 등
  • Section2. C++ IDioms
    • CRTP
    • RAII
    • NRVO
    • Function Object
    • Smart Pointer
    • AddressOf
    • Thin Template
    • Trivial,
    • Meta Function
    • NVI
    • PIMPL
    • 다양한 C++ IDioms
  • Section3. template 고급 기술과 메타 프로그램 <BR><BR> STL/BOOST
    • template type deduction
    • template 고급 문법
    • 전문화, 부분 전문화, traits, policy, 메타 프로그램
    • 멤버 template
    • 구현으로 배우는 STL의 원리
    • Iterator, insert iterator, reverse_iterator, stream iterator
    • iterator_traits, iterator_category
    • 메타 함수, 형식 계산, Traits 기법
    • 바인더, 부정자, 함수 어답터, 함수객체,
    • 클래스 내의 typedef의 개념과 원리
    • 개념과 모형 구현
    • tuple<>, type_traits<>, shared_ptr<>, weak_ptr<>
    • function<>, bind<>, mem_fn<>, result_of<>, reference_wrapper<>
    • unordered_set<>, unordered_map<>, array<>
    • regular_expression<>
    • boost
  • Section4. C++11/14
    • value categories
    • rvalue_reference, forwarding reference (universal reference)
    • lambda,
    • user define contant
    • variadic template
    • auto, decltype
    • constexp, nullptr
    • delegate constructor
    • perfect forwarding
    • move sentence
    • template alias