Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/utilForever/modern-cpp-tutorial
A curated list of Modern C++ articles, examples, tutorials, frameworks, libraries, and shiny things.
https://github.com/utilForever/modern-cpp-tutorial
Last synced: 13 days ago
JSON representation
A curated list of Modern C++ articles, examples, tutorials, frameworks, libraries, and shiny things.
- Host: GitHub
- URL: https://github.com/utilForever/modern-cpp-tutorial
- Owner: utilForever
- License: mit
- Created: 2015-02-14T16:28:42.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-03-30T09:24:45.000Z (over 7 years ago)
- Last Synced: 2024-08-05T02:01:23.343Z (3 months ago)
- Language: C++
- Homepage:
- Size: 7.16 MB
- Stars: 324
- Watchers: 48
- Forks: 47
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- anything_about_game - modern-cpp-tutorial
- AwesomeCppGameDev - modern-cpp-tutorial
README
# Modern C++
A curated list of Modern C++ articles, examples, tutorials, frameworks, libraries, and shiny things.
## Notice
2017/03/01 - I'll add examples for C++17 features.
## Articles
### English → Korean
[The Four Polymorphisms in C++](https://github.com/utilForever/ModernCpp/blob/master/Articles/The%20Four%20Polymorphisms%20in%20C%2B%2B.md)
## Examples
### Classes
[polymorphism.cpp]() -
### Declaration
[scoped_enum.cpp]() -
### Exceptions
[stack_unwinding1.cpp]() -
[stack_unwinding2.cpp]() -
[try_catch_throw1.cpp]() -
[try_catch_throw2.cpp]() -
### Expressions
[operator_overloading.cpp]() -
### Keywords
[alignas.cpp]() -
[const_cast.cpp]() -
[default.cpp]() -
[delete.cpp]() -
[dynamic_cast.cpp]() -
[nullptr.cpp]() -
[reinterpret_cast.cpp]() -
[static_cast.cpp]() -
[typeid.cpp]() -
### Libraries
#### Thread support
[async.cpp]() -
[future.cpp]() -
[promise.cpp]() -
### Miscellaneous
[RAII-rule_of_five.cpp]() -
[RAII-rule_of_zero.cpp]() -
### Templates
[class_template.cpp]() -
[function_template.cpp]() -
## Tutorials
### C++ Programming Basic Course Slides (presented by Korean)
[1st Study: From C to C++ (1/4)](http://www.slideshare.net/utilforever/c-programming-1s-study)
- printf, scanf → cin, cout
- bool type
- auto keyword[2nd Study: From C to C++ (2/4)](http://www.slideshare.net/utilforever/c-programming-2nd-study)
- Range-based for
- malloc, free → new, delete
- NULL → nullptr
- static_cast[3rd Study: From C to C++ (3/4)](http://www.slideshare.net/utilforever/c-programming-3rd-study)
- Scoped enum
- Binary literal, separator
- std::string[4th Study: From C to C++ (4/4)](http://www.slideshare.net/utilforever/c-programming-4th-study)
- Reference
- Function overloading
- Namespace[5th Study: Object-Oriented Programming (1/8)](http://www.slideshare.net/utilforever/c-programming-5th-study)
- Class and object
- Access modifier: public, protected, private
- Information hiding, Encapsulation[6th Study: Object-Oriented Programming (2/8)](http://www.slideshare.net/utilforever/c-programming-6th-study)
- Constructor
- Destructor
- this pointer[7th Study: Object-Oriented Programming (3/8)](http://www.slideshare.net/utilforever/c-programming-7th-study)
- Copy constructor
- Copy assignment operator
- Shallow copy / deep copy
- Rule of zero / rule of three[8th Study: Object-Oriented Programming (4/8)](http://www.slideshare.net/utilforever/c-programming-8th-study)
- Member variable
- static
- const
- reference
- const reference
- Member function
- static
- const
- default parameter[9th Study: Object-Oriented Programming (5/8)](http://www.slideshare.net/utilforever/c-programming-9th-study)
- Inheritance
- Method overriding
- Something about superclasses
- Up / down casting[10th Study: Object-Oriented Programming (6/8)](http://www.slideshare.net/utilforever/c-programming-10th-study)
- Polymorphism
- Pure virtual method[11th Study: Object-Oriented Programming (7/8)](http://www.slideshare.net/utilforever/c-programming-11th-study)
- Operator Overloading[12th Study: Object-Oriented Programming (8/8)](http://www.slideshare.net/utilforever/c-programming-12th-study)
- Multiple inheritance
- vtable (virtual function table)
- RTTI(Run-Time Type Information)[13th Study: Exception Handling](http://www.slideshare.net/utilforever/c-programming-13th-study)
- Exception handling in C++
- try ~ catch ~ throw
- Standard exception classes
- Stack unwinding[14th Study: Generic Programming](http://www.slideshare.net/utilforever/c-programming-14th-study)
- Generic programming in C++
- Function template
- Class template[15th Study: TBA](...)
### Basic Curriculum
1. From C To C++
- (1st) printf, scanf -> std::cin, std::cout
- (1st) bool type
- (1st) auto
- (2nd) Range-based for
- (2nd) malloc, free -> new, delete
- (2nd) NULL -> nullptr
- (2nd) Casting 1: static_cast
- (3rd) Scoped enum
- (3rd) Binary literal, Separator
- (3rd) std::string
- (4th) Reference
- (4th) Function overloading
- (4th) Namespace
- (TBD) decltype
- (TBD) Casting 2: dynamic_cast, const_cast, reinterpret_cast
- (TBD) typedef -> type alias
- (TBD) Uniform initialization
- (TBD) Initializer list
- (TBD) Lambda expression
- (TBD) Lvalue / Rvalue reference
- (TBD) Move semantics
- (TBD) Perfect forwarding
- (TBD) Smart pointer: unique_ptr, shared_ptr, weak_ptr
2. OOP: Object-Oriented Programming
- (5th) Class and Object
- (5th) Access modifier: public, protected, private
- (5th) Information hiding, Encapsulation
- (6th) Constructor
- (6th) Destructor
- (6th) this pointer
- (7th) Copy constructor
- (7th) Copy assignment operator
- (7th) Shallow copy, Deep copy
- (7th) Rule of zero, Rule of three
- (8th) Member variable: static / const / reference / const reference
- (8th) Method: static / const / method overloading / default parameter / inline
- (9th) Inheritance
- (9th) Method Overriding
- (9th) Something about superclasses
- (9th) Up / Down casting
- (10th) Polymorphism
- (10th) Pure virtual method
- (11th) Operator overloading
- (12th) Multiple inheritance
- (12th) vtable, RTTI
- (TBD) Special functions 3: Move constructor, Move assignment operator
- (TBD) Special functions 4: std::initializer_list constructor, Inheriting constructor
- (TBD) Rule of five
- (TBD) =default, =delete
- (TBD) explicit keyword
- (TBD) friend keyword
- (TBD) mutable
- (TBD) overriding keyword
- (TBD) final keyword
- (TBD) PIMPL
3. Exception Handling
- (13th) Exception handling in C++
- (13th) try ~ catch ~ throw / throw list (noexcept)
- (13th) Standard exception classes
- (13th) Stack unwinding
- (TBD) Nested exception
- (TBD) Function-try-block
4. Generic Programming: Template
- (14th) Generic programming in C++
- (14th) Function template
- (14th) Class template
- (TBD) Template specialization
- (TBD) Partial specialization
- (TBD) Template inheritance vs template specialization
- (TBD) Template aliases
- (TBD) decltype + auto
- (TBD) Function template
- (TBD) Template recursion
- (TBD) Variadic template
- (TBD) Variable template
- (TBD) Type inference
- (TBD) SFINAE
- (TBD) Template metaprogramming
- (TBD) Type traits
- (TBD) constexpr
5. Concurrency: Multithreading Programming
- (TBD) Race condition, Deadlock
- (TBD) Atomic task
- (TBD) thread
- (TBD) mutex, lock, call_once
- (TBD) condition_variable
- (TBD) async
- (TBD) future, promise
- (TBD) Thread pool
6. STL: Standard Library
- (TBD) vector, deque, list, array
- (TBD) queue, priority_queue, stack
- (TBD) pair, tuple, map, multimap, set, multiset
- (TBD) algorithm
- (TBD) function
- (TBD) forward_list
- (TBD) unordered_map, unordered_multimap, unordered_set, unordered_multiset
- (TBD) bitset
- (TBD) ratio
- (TBD) chrono
- (TBD) random
- (TBD) regular expression