Skip to content

Namespaces, classes, member functions, stdio streams, initialization lists, static, const, and other basics.

Notifications You must be signed in to change notification settings

FlorentBelotti/42_cursus_CPP_Modules

Repository files navigation

42_cursus_cpp_modules---------------------------------------------------

C++

Summary---------------------------------------------------

Introduction---------------------------------------------------

The CPP Modules are a series of progressive educational projects designed to teach the fundamentals of object-oriented programming in C++. These modules help students deepen their programming knowledge and explore specific concepts of the language, such as polymorphism, memory management, exceptions, and more.

Organization of the Modules---------------------------------------------------

The modules follow an increasing level of complexity, with each project focusing on a particular aspect of the language or a problem to solve. They cover both the basics and advanced concepts required to become proficient in object-oriented programming.

Content of the Modules---------------------------------------------------

  1. Module 00: Basics of C++
    Introduction to C++, focusing on fundamental differences from C. Topics include:

    • Classes and objects.
    • Constructors and destructors.
    • Basics like static and dynamic memory.
  2. Module 01: Pointers and References
    Deep dive into memory handling and object manipulation:

    • Pointers, references, and memory allocation.
    • Using destructors to prevent memory leaks.
    • Introduction to the assignment operator.
  3. Module 02: Ad-hoc Polymorphism and Canonical Form
    Exploration of key abstraction concepts in C++:

    • Operator overloading.
    • Canonical forms of classes.
    • Implicit and explicit conversions.
  4. Module 03: Inheritance
    Understanding the principle of inheritance:

    • Base and derived classes.
    • Managing virtual destructors.
    • Dynamic polymorphism and interfaces.
  5. Module 04: Abstract Classes and Interfaces
    Designing systems modeled with abstract classes:

    • Using pure virtual methods.
    • Advanced dynamic polymorphism.
    • Handling complex objects via interfaces.
  6. Module 05: Exceptions and Error Management
    Introduction to error management mechanisms in C++:

    • Using try, catch, and throw blocks.
    • Creating custom exception classes.
    • Handling errors in modular programs.
  7. Module 06: Casts and Explicit Conversions
    Advanced handling of casting in C++:

    • static_cast, dynamic_cast, reinterpret_cast, and const_cast.
    • Safe management of type conversions.
    • Optimizing performance in complex environments.
  8. Module 07: Templates
    Exploring templates for generic programming:

    • Class and function templates.
    • Benefits and limitations of templates.
    • Applications in structures like containers.
  9. Module 08: Containers and Algorithms
    In-depth study of the STL (Standard Template Library):

    • Using containers like vector, map, set.
    • Implementing standard algorithms.
    • Optimizing operations on data structures.

Learning Objectives---------------------------------------------------

  • Understand and master object-oriented programming.
  • Acquire skills in modularity and abstraction.
  • Develop a methodology to solve complex problems in C++.
  • Get introduced to advanced concepts like design patterns, memory management, and optimization.

The CPP Modules are an excellent starting point to master C++ and prepare for more ambitious projects, such as graphics engines, simulators, or real-time applications.

About

Namespaces, classes, member functions, stdio streams, initialization lists, static, const, and other basics.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published