Start Here
  • Introduction
  • Source Code
  • Required software
  • Visual Studio 2015 Installation
  • Visual Studio 2017 Installation
  • Code::Blocks Installation
  • Cevelop Installation
  • XCode Installation on MacOS
  • Course Slides
Basic Language Facilities
  • What is C++?
  • First C++ Program
  • The C++ Compilation Process
  • Primitive Types & Variables
  • Basic Input/Output
  • Functions Basics - Part I
  • Functions Basics - Part II
  • Overview of Debugging in Visual Studio
  • Uniform Initialization (C++11)
  • Pointers
  • Assignment
  • Reference
  • Assignment
  • Reference Vs Pointer
  • The const Qualifier
  • const Qualifer & Compound Types
  • Assignment
  • Automatic Type Inference (C++11)
  • Basics Quiz - I
  • Range-Based For Loop - I (C++11)
  • Range-Based For Loop - II (C++11)
  • Function Overloading
  • Default Function Arguments
  • Inline Functions
  • Function Pointers
  • Namespace
  • Basics Quiz - II
Memory Management - Part I
  • Dynamic Memory Allocation - Part I (malloc function)
  • Dynamic Memory Allocation - Part II (new operator)
  • Dynamic Memory Allocation - Part III (new[] operator)
  • Dynamic Memory Allocation - Part IV (2D arrays)
  • Dynamic Memory Allocation - Source Code Only
Classes & Objects
  • Object Oriented Programming Basics
  • Class
  • Constructor & Destructor
  • Structures
  • Non-static Data Member Initializers (C++11)
  • this Pointer
  • Constant Member Functions
  • Static Class Members
  • Copy Constructor - Part I
  • Copy Constructor - Part II
  • Delegating Constructors (C++11)
  • Default & Deleted Functions (C++11)
  • Quiz I
Move Semantics
  • L-values, R-values & R-value References (C++11)
  • Move Semantics - Basics (C++11)
  • Move Semantics - Implementation (C++11)
  • Rule of 5 & 0
  • Copy Elision
  • std::move Function (C++11)
  • Quiz
Operator Overloading
  • Operator Overloading Demo Code
  • Operator Overloading - Part I (Basics)
  • Operator Overloading - Part II (Assignment Operator)
  • Operator Overloading - Part III (Global Overloads)
  • Operator Overloading - Part IV (Friend Keyword)
  • Operator Overloading - Part V (Smart Pointer Basics)
  • Operator Overloading - Part VI (Smart Pointers in C++11)
  • Operator Overloading - Part VII (Rules)
  • Type Conversions - Part I (Basics)
  • Type Conversions - Part II (Primitive to User Type)
  • Type Conversions - Part III (User to Primitive Type)
  • Initialization Vs. Assignment & Member Initialization List
  • Quiz
Memory Management - Part II
  • Smart Pointers - I
  • Smart Pointers - II
  • Smart Pointers - III
  • Smart Pointers - IV
  • Smart Pointers - V
  • Smart Pointers - VI
More C++ Goodies
  • Enums - Part I (Basics)
  • Enums - Part II (Scoped Enums C++11)
  • Strings - Part I (Raw Strings)
  • Strings - Part II (std::string)
  • Assignment I
  • Strings - Part III (String Streams)
  • Assignment II
  • User-Defined Literals
  • Constant Expressions - constexpr (C++11)
  • std::initializer_list (C++11)
  • Dynamic Array (std::vector)
  • Assignment III