Complete Modern C++

(C++98/11/14/17)

Learn the features of Modern C++ in depth

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

Course Introduction

A message from the instructor

How to use this course

Required Software

Source Code

Visual Studio 2015 Installation

Visual Studio 2017 Installation

CodeBlocks Installation

Cevelop Installation

XCode Installation

What is C++

First C++ Program

The C++ Build Process

C++ Types

Basic Console Input/Output

Functions - I

Functions - II

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

Range-Based For Loop - II (C++11)

Function Overloading

Default Function Overloading

Inline Functions

Function Pointers

Namespace

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)

this pointer

Constant Member Functions

State Member Functions

Copy Semantics - I

Copy 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

std::move Function

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

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 - II

Practice

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)

std::function - I

std::function - II

std::bind-I

std::bind - II

std::bind - III

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

inline variables

Nested Namespaces

noexcept Change

constexpr Lambda

Structured Bindings

EvaluationOrder

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

Reviews

What other students say about this course

Image23

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

Additional products


New course notifications

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

Yes please, save my details so you can send me educational content that is relevant and helpful.