Complete Modern C++ (C++98/11/14/17)
Learn the features of Modern C++ in depth
Use C++ as an object-oriented language
Write real-world applications in C++
Demystify function & class templates
Use STL components in your applications
Course Prerequisites
Learn C++ in depth with modern features introduced with C++11/14/17
C++ is a general purpose programming language invented by Bjarne Stroustrup. It is still one of the more popular programming languages, used for creating high performance applications across a wide variety of domains & platforms.
In 2011, C++11 was born. This revision added lot of new features to the language and it got a new name, Modern C++. This emphasizes writing C++ code using modern features of the language such as move semantics, automatic type inference, threading, lambda expressions, smart pointers and a lot more. C++11 was followed by C++14, that added even more features and enhanced existing onces. In 2017, we may see a new release called C++17, that will add a filesystem library (covered in the course), parallel versions of STL algorithms, new library types such as std::optional, std::any and more.
This course teaches C++ as an object oriented language with modern features. It focuses on teaching C++ concepts, both old and new, with clear examples. It builds upon the basic language facilities that are then used to build more complex programs with classes, operator overloading, composition, inheritance, polymorphism, templates, concurrency, etc. It even digs deep into assembly to understand few concepts better. After every few topics, a quiz is presented that tests your understanding of the previous topics. Have fun learning Modern C++.
Note that this course is not for you if
You have never programmed before
You don't know ANY programming language
You want to learn basics of programming
Check a few preview videos to get an idea of the course content & structure
Course Introduction
Required Software
Source Code
Visual Studio 2015 Installation
Visual Studio 2017 Installation
CodeBlocks Installation
Cevelop Installation
XCode Installation
What is C++
First C++ Program
FREE PREVIEWThe C++ Build Process
C++ Types
Basic Console Input/Output
Functions - I
FREE PREVIEWFunctions - II
FREE PREVIEWOverview of Debugging in Visual Studio
Uniform Initialization (C++11)
Pointer Type
Practice
Reference Type
Practice
References vs Pointers
const Qualifier
const Qualifier & Compound Types
Practice
Automatic Type Inference (auto) (C++11)
Range-Based For Loop - I (C++11)
FREE PREVIEWRange-Based For Loop - II (C++11)
FREE PREVIEWFunction Overloading
Default Function Overloading
Inline Functions
Function Pointers
Namespace
Quiz
Review
Memory Allocation using malloc
Memory Allocation using new
Allocating Dynamic Arrays - I
Allocating Dynamic Arrays - II
Review
Object Oriented Programming Basics
class
Constructor & Destructor
struct
Non-static Data Member Initialization (C++11)
FREE PREVIEWthis pointer
Constant Member Functions
State Member Functions
Copy Semantics - I
FREE PREVIEWCopy Semantics - II
Delegating Constructor (C++11)
Default & Deleted Functions (C++11)
Review
Value Categories (C++11)
Move Semantics Basics
Move Semantics Implementation
Rule of 5 & 0
Copy Elision
FREE PREVIEWstd::move Function
Quiz
Basic Operators
Assignment Operator
Global Overloaded Operators
Friend Functions
Smart Pointers - I
Smart Pointers - II
Operator Overloading Rules
Type Conversion Overview
Type Conversion - Primitive to User-defined
Type Conversion - User-defined to Primitive
Initialization vs assignment
Quiz
Review
Raw Pointers
unique_ptr
Sharing Pointers
Sharing std::unique_ptr
std::shared_ptr
Weak Ownership
weak_ptr Internals
Circular Reference
Deleter
Dynamic Arrays
Make Functions
enum - Basics
enum - Scoped Enums (C++11)
Strings in C
Strings in C++
Practice
StringStreams
Practice
User Defined Literals
constexpr (C++11)
Initializer List
Dynamic Array - vector
Union - I
Union - II
Practice
Quiz
Reuse
Inheritance & Access Modifiers
Project I
Project II
Project - III Exercise
Project IV
Project V
Project VI
Project VII
Project VIII
Upcasting & Downcasting
RTTI Overview
RTTI Operators
Abstract Class
13. Multiple Inheritance
Review
Basics
Multiple Catch Blocks
Stack Unwinding
Nested Exceptions
Exception Handling in Constructors & Destructors
noexcept Keyword (C++11)
Raw String Literals (C++11)
Filesystem Overview (C++17)
File IO - Part I
File IO - Part II
File IO - Part III
File IO - Part IV
File IO - Part V
Introduction
Argument Deduction & Instantiation
Explicit Specialization
Nontype Template Arguments
Perfect Forwarding - I (C++11)
Perfect Forwarding - II (C++11)
Variadic Templates - I
Variadic Templates II
Fold Expressions - I (C++17)
Fold Expressions - II (C++17)
Fold Expressions - III (C++17)
Fold Expressions - IV (C++17)
Class Templates
Class Explicit Specialization - I
Class Explicit Specialization - II
Partial Specialization
Alias Templates (C++11)
Type Traits (C++11)
Type Traits Suffixes (C++14)
static_assert (C++11)
TypeTraits
StaticAssert
Class Template ArgumentDeduction
Compile-time If - I
Compile-time If - II
Callbacks using Function Pointers
Callbacks using Function Objects
Lambda Expressions
Lambda Expressions - Internals
Capture List - I
Capture List - II
Capture List - III
Generalized Lambda Capture (C++14)
Introduction
array
vector
deque
list
set
map
Unordered Containers - I
Unordered Containers - II
Custom Hash Function
Big O Notation
Algorithms - I
Algorithms II
Container Changes in C++11 - I
Container Changes in C++11 - II
Container Changes in C++11 - III
Container Changes in C++11 - IV
Container Changes in C++11 - V
Concurrency Basics
Thread creation
Passing Arguments
Thread Synchronization
lock_guard
More Thread functions
async - I
async - II
Launch Policies
Future
Promise
Exceptions
Deprecated & Removed Features
Changes
Attributes
Feature Test Macros
ifswitch with Initialization
FREE PREVIEWinline variables
Nested Namespaces
noexcept Change
constexpr Lambda
Structured Bindings
FREE PREVIEWEvaluationOrder
Mandatory Copy Elision - I
Mandatory Copy Elision - II
Optional - I
Optional - II
Optional - III
Variant - I
Variant - II
Variant - III - Visit
any
String View - I
String View - II
Filesystem - path
Filesystem - directory_entry
Filesystem - directory functions
Filesystem - permissions
Parallel Algorithms - I
Parallel Algorithms - II
Parallel Algorithms - III
Before you go...
What other students say about this course
Liked the way instructor teaches C++. Starts with basic concepts, examples and internal details of all features.
Liked the way instructor teaches C++. Starts with basic concepts, examples and internal details of all features.
Read LessSo far looks good. Enough examples to practice, well detailed. Helpful instructor.
So far looks good. Enough examples to practice, well detailed. Helpful instructor.
Read LessThe course is good, but I'd like to request the instructor to add more assignment activies if possible. Thank you.
The course is good, but I'd like to request the instructor to add more assignment activies if possible. Thank you.
Read LessGood coverage of all topics of C++.
Good coverage of all topics of C++.
Read LessDet har vært et veldig bra kurs, god oppbygging og gjennomgang. Ser nå frem til design mønstre.
Det har vært et veldig bra kurs, god oppbygging og gjennomgang. Ser nå frem til design mønstre.
Read LessThe course is very complex and useful! Thank you very much!
The course is very complex and useful! Thank you very much!
Read LessGet to know your instructor
Umar Lone
All Courses, Object Oriented Programming & Design
Learn Object Oriented software development with Analysis, Design & Programming using UML in C++, Java & C#
All Courses, Object Oriented Programming & Design
All Courses, Object Oriented Programming & Design
All Courses, Object Oriented Programming & Design
Add your email to the mailing list to get the latest updates.