md
C++ Topics
Introduction about C++
Your First C++ Program
Comments
Single-line comments
Multi-line comments
Errors and Warnings
Example of an error
Example of a warning
Statements and Functions
Declaration Statements
Functions
Data input and output
Standard Input and Output
File Input and Output
Input and Output Manipulators
C++ Program Execution Model
Phases of Program Execution
Program Structure
Memory Allocation
C++ Core Language Vs Standard Library Vs STL
Core Language
Standard Library
Standard Template Library (STL)
Variables and data types
Variables and Data Types Introduction
Data Types in C++
Variable Declaration and Initialization
Constants
Number Systems
Decimal System
Binary System
Hexadecimal System
Integer Types: Decimals and Integers
Integer Modifiers
Fractional Numbers
Booleans
Characters and Text
Auto
Assignments
Variables and Data Types Summary
Operations on Data
Introduction on Data Operations
Basic Operations
Precedence and Associativity
Prefix/Postfix Increment \& Decrement
Compound Assignment Operators
Relational Operators
Logical Operators
Output Formatting
Numeric Limits
Math Functions
Weird Integral Types
Data Operations Summary
Flow Control
Flow Control Introduction
If Statements
Else If
Switch
Ternary Operators
Flow Control Summary
Conditional Statements
Loops
Loops Introduction
For Loop
While Loop
Do While Loop
Arrays
Introduction to Arrays
Declaring and using arrays
Size of an array
Arrays of characters
Array Bounds
Pointers
Introduction to Pointers
Declaring and using pointers
Pointer to char
Program Memory Map Revisited
Dynamic Memory Allocation
Dangling Pointers
Example 1: Dangling Pointer Issue
How to Avoid Dangling Pointers
When new Fails
Example 2: Handling
new
Failure
How to Handle
new
Failure
Null Pointer Safety
Example 3: Null Pointer Check
Null Pointer Handling Tips
Memory Leaks
Example 4: Memory Leak
How to Prevent Memory Leaks
Dynamically Allocated Arrays
Example 5: Dynamic Array Allocation
Best Practices for Dynamic Arrays
References
Introduction to References
Declaring and Using References
Comparing Pointers and References
Similarities
Differences
References and Const
Character Manipulation and Strings
Introduction to Strings
C-Style Strings
Declaring and Initializing C-Style Strings
String Manipulation with C-Style Strings
std::string
Class
Declaring and Initializing
std::string
String Manipulation with
std::string
Character Manipulation
Examples of Character Manipulation
Changing Characters
Extracting Characters
Comparing Characters
C-string Manipulation
Examples of C-string Manipulation
Length of a C-string
Copying C-strings
Concatenating C-strings
C-string Concatenation and Copy
C-string Concatenation
C-string Copy
Introducing std::string
Benefits of using std::string
Example of std::string
Declaring and Using std::string
Declaring std::string
Using std::string
Functions
The One Definition Rule
First Hand on C++ Functions
Function Declaration and Function Definitions
Multiple Files - Compilation Model Revisited
Pass by Value
Pass by pointer
Pass by reference
Getting Things out of functions
Introduction to getting things out of functions
Input and output parameters
Returning from functions by value
Function Overloading
Function Overloading Introduction:
Overloading with Different Parameters:
Lambda functions
Intro to Lambda Functions:
Declaring and Using Lambda Functions:
Capture Lists:
Function Templates
Introduction to Function Templates:
Trying Out Function Templates:
Template Type Deduction and Explicit Arguments:
Template parameters by reference
Template specialization
C++20 Concepts Crash course
Intro to C++20 Concepts
Using C++20 Concepts
Building your own C++20 Concepts
Zooming in on the requires clause
Combining C++20 Concepts
C++20 Concepts and auto
Classes
Intro to classes
Your First Class
C++ Constructors
Default Constructor
Setters and Getters
Class Across Multiple Files
Arrow Pointer Call Notation
Destructors
Order of Constructor Destructor Calls
The
this
Pointer
struct
Size of Objects
Inheritance
Introduction to Inheritance
First try on Inheritance
Protected Members
Base Class Access Specifiers: Zooming In
Closing in on Private Inheritance
Resurrecting Members Back in Context
Default Constructors with Inheritance
Custom Constructors With Inheritance
Copy Constructors with Inheritance
Inheriting Base Constructors
Inheritance and Destructors
Reused Symbols in Inheritance
Polymorphism
Introduction to Polymorphism
Static Binding with Inheritance
Dynamic Binding with Virtual Functions
Size of Polymorphic Objects and Slicing
Polymorphic Objects Stored in Collections (Array)
Override
Overloading, Overriding, and Function Hiding
Inheritance and Polymorphism at Different Levels
Inheritance and Polymorphism with Static Members
Final
Virtual Functions with Default Arguments
Virtual Destructors
Dynamic Casts
Polymorphic Functions and Destructors
Pure Virtual Functions and Abstract Classes
Abstract Classes as Interfaces