What you'll learn

  • Use C++ as an object-oriented language

  • Write real-world applications in C++

  • Demystify function & class templates

  • Use STL components in your applications

  • Full lifetime access
  • Access on mobile
  • Certificate of Completion

    Course Prerequisites

    • Basic programming knowledge of any computer language
    • Modern C++ compiler, preferably Visual Studio 2015/17/19 Community (or XCode, Clang, g++, Cevelop, Eclipse CDT, Code::Blocks)

Course Description

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

  1. You have never programmed before

  2. You don't know ANY programming language

  3. You want to learn basics of programming


Check a few preview videos to get an idea of the course content & structure


Course curriculum

  • 1

    Welcome to the course!

    • Course Introduction

  • 2

    Development Environment Setup

    • Required Software

    • Source Code

    • Visual Studio 2015 Installation

    • Visual Studio 2017 Installation

    • CodeBlocks Installation

    • Cevelop Installation

    • XCode Installation

  • 3

    Basic Language Facilities

  • 4

    Memory Management - I

    • Memory Allocation using malloc

    • Memory Allocation using new

    • Allocating Dynamic Arrays - I

    • Allocating Dynamic Arrays - II

    • Review

  • 5

    Classes & Objects

  • 6

    Move Semantics

    • Value Categories (C++11)

    • Move Semantics Basics

    • Move Semantics Implementation

    • Rule of 5 & 0

    • Copy Elision

      FREE PREVIEW
    • std::move Function

    • Quiz

  • 7

    Operator Overloading

    • 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

  • 8

    Memory Management - II

    • 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

  • 9

    More Language Facilities

    • 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

  • 10

    Object Oriented Programming

    • 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

  • 11

    Exception Handling

    • Basics

    • Multiple Catch Blocks

    • Stack Unwinding

    • Nested Exceptions

    • Exception Handling in Constructors & Destructors

    • noexcept Keyword (C++11)

  • 12

    File I/O

    • 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

  • 13

    Generic Programming through Templates

    • 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

  • 14

    Lambda Expressions (C++11)

    • 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)

  • 15

    Standard Template Library

    • 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

  • 16

    Concurrency

    • Concurrency Basics

    • Thread creation

    • Passing Arguments

    • Thread Synchronization

    • lock_guard

    • More Thread functions

    • async - I

    • async - II

    • Launch Policies

    • Future

    • Promise

    • Exceptions

  • 17

    C++ 17 Core Language Features

  • 18

    C++17 Standard Library Features

    • 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...

Reviews

What other students say about this course

5 star rating

Detailed course

Alesia J

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 Less
5 star rating

Good

Ruchi Verma

So far looks good. Enough examples to practice, well detailed. Helpful instructor.

So far looks good. Enough examples to practice, well detailed. Helpful instructor.

Read Less
5 star rating

Clear examples, easy to understand

Shreya Madhavan

The 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 Less
5 star rating

Modern C++

Alessandro Thomas

Good coverage of all topics of C++.

Good coverage of all topics of C++.

Read Less
5 star rating

Ferdig med kurset:-)

Bard Sagstad

Det 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 Less
5 star rating

Excellent course!

Eugen Vilcu

The course is very complex and useful! Thank you very much!

The course is very complex and useful! Thank you very much!

Read Less

Instructor

Get to know your instructor

Owner at Poash Technologies & Poash Learning

Umar Lone

Civil engineer who found his calling in software development. Never worked as a Civil engineer, jumped at the first chance and started teaching C++, Visual C++ & COM 18 years ago. Currently, trains software professionals in various IT companies in India in different technologies, such as C++, Advanced C++, STL, Design Patterns, Android, Unity, Linux, etc. Very passionate about teaching and has trained more than 35,000 software professionals in a teaching career spanning more than 2 decades. An avid gamer, currently trying his hand with game development in Unity & Unreal. Has a few Android applications to his credit, including one on Design Patterns. Only thing he likes more than C++ is Modern C++.

New course notifications

Add your email to the mailing list to get the latest updates.