-
Core Language Features
- Variables and data types (fundamental types, user-defined types)
- Constants and literals
- Operators (arithmetic, logical, bitwise, assignment, comparison)
- Control flow statements (if/else, switch, loops)
- Functions and function overloading
- Scope and lifetime management
- Type casting and type conversion
- Enumeration types
- Arrays and multidimensional arrays
- Pointers and references
- Dynamic memory allocation and deallocation
-
Object-Oriented Programming
- Classes and objects
- Constructors and destructors
- Member variables and member functions
- Access specifiers (private, protected, public)
- Inheritance (single and multiple)
- Virtual functions and polymorphism
- Abstract classes and pure virtual functions
- Function overriding
- Static members
- Friend functions and friend classes
- Operator overloading
-
Memory Management
- Stack vs heap allocation
- Manual memory management with new/delete
- Memory leaks and dangling pointers
- Smart pointers (unique_ptr, shared_ptr, weak_ptr)
- RAII (Resource Acquisition Is Initialization)
- Copy constructors and assignment operators
- Move semantics and move constructors
- Rule of three/five/zero
-
Templates and Generic Programming
- Function templates
- Class templates
- Template specialization
- Template metaprogramming
- Variadic templates
- SFINAE (Substitution Failure Is Not An Error)
- Concepts (C++20)
- Template argument deduction
-
Standard Template Library (STL)
- Containers (vector, list, deque, set, map, unordered containers)
- Iterators and iterator categories
- Algorithms (sort, search, transform, etc.)
- Function objects and functors
- Allocators
- String class and string manipulation
-
Advanced Language Features
- Namespaces and using declarations
- Exception handling (try/catch/throw)
- Function pointers and function objects
- Lambda expressions and closures
- Auto keyword and type deduction
- Range-based for loops
- Initializer lists
- Uniform initialization syntax
- Nullptr keyword
- Constexpr functions and variables
-
C++11 and Later Features
- Move semantics and rvalue references
- Smart pointers
- Thread support library
- Atomic operations
- Regular expressions
- Random number generation
- Time utilities (chrono library)
- Tuple and pair types
- Hash tables (unordered containers)
-
C++14 Features
- Generic lambdas
- Return type deduction for functions
- Variable templates
- Binary literals
- Digit separators
-
C++17 Features
- Structured bindings
- If constexpr
- Fold expressions
- Optional type
- Variant type
- Any type
- String view
- Filesystem library
- Parallel algorithms
-
C++20 Features
- Concepts and constraints
- Modules
- Coroutines
- Ranges library
- Calendar and timezone extensions
- Format library
- Bit manipulation utilities
- Three-way comparison operator
-
C++23 Features
- Import standard library modules
- Multidimensional subscript operator
- Static call operator
- Optional monadic operations
- Expected type for error handling
-
Preprocessor Features
- Macro definitions and expansion
- Conditional compilation
- Include guards and pragma once
- Predefined macros
- Stringification and token pasting
-
Compilation and Linking
- Translation units
- Header files and implementation files
- Forward declarations
- Linkage specifications
- Inline functions
- Static and extern keywords
- One Definition Rule (ODR)
-
Low-Level Features
- Bit manipulation
- Union types
- Volatile keyword
- Assembly language integration
- Memory alignment
- Platform-specific extensions
-
Standard Library Components
- Input/output streams
- File handling
- Mathematical functions
- Type traits and type utilities
- Memory utilities
- Functional utilities
- Localization support
- Error handling utilities