This repository is dedicated to my journey of learning Object-Oriented Programming (OOPs) in C++ in a detailed and structured way.
- Ashutosh Singh
- 3rd Semester
- Parul Institute of Engineering and Technology
This repo will cover the core principles of OOPs in C++ and provide practical programs, examples, and notes for better understanding.
The main focus is on building a strong conceptual foundation in:
- Classes and Objects
- Data Abstraction
- Encapsulation
- Inheritance
- Polymorphism
- Constructors and Destructors
- Operator Overloading
- Virtual Functions
The purpose of this repository is to:
- learn C++ systematically
- understand OOPs concepts deeply
- practice real coding examples
- improve problem-solving ability
- revise important concepts before exams and interviews
T## opics Covered
- History and features of C++
- Difference between C and C++
- Structure of a C++ program
- Input/output streams
- Namespace and standard library
- Operators
- Control statements
- Loops
- Functions and parameter passing
- Arrays and strings
- Class and object
- Data members and member functions
- Access specifiers
- Encapsulation
- Abstraction
- Modularity ing
- Variables and data type
- Default constructor
- Parameterized constructor
- Copy constructor
- Destructor
- Constructor overloading
- Single inheritance
- Multiple inheritance
- Multilevel inheritance
- Hierarchical inheritance
- Hybrid inheritance
- Access control in inheritance
- Compile-time polymorphism
- Function overloading
- Operator overloading
- Runtime polymorphism
- Virtual functions
- Pure virtual functions and abstract classes
- Friend function
- Friend class
- Static members
- This pointer
- Dynamic memory allocation
- Shallow copy vs deep copy
This repository will include:
- source code files for concepts
- practice exercises
- examples and mini-projects
- notes and explanations
This repo will be updated as I continue learning and practicing OOPs in C++. The goal is to build a clear path from beginner concepts to advanced object-oriented design.
A separate tracker file is available here: LEARNING_TRACKER.md
- Access Modifiers — Acess_modifiers.cpp
- Encapsulation — Encapsulation.cpp
- Classes and Objects — oops.cpp
- Single Inheritance — Inheritance.cpp
- Multiple Inheritance — multiple_inherit.cpp
- Multilevel Inheritance — multilevel_inherit.cpp
- Hierarchical Inheritance — hirerichal_inheritance.cpp
- Constructors — Constructors.cpp, Default_constructor.cpp, parameterized.cpp
- Constructor Initialization List — constructor_initlializaton_list.cpp
- Copy Constructor — copy_constructor.cpp
- Constructor Overloading — constructor_overloading.cpp
- Destructor — Destructor.cpp
- Compile-time Polymorphism — compile-time.cpp
- Runtime Polymorphism — runtime.cpp, virtual_functions.cpp
- Friend Function and Friend Class
- Static Members and
thisPointer -
thisPointer — Thispointer.cpp - Pointers and References — pointers.cpp
- RAII and Resource Management — RAII.cpp
- Smart Pointers — Shared_pointers.cpp
- Rule of 3, Rule of 5, and Rule of 0
- Move Constructor and Move Assignment
- Lvalues, Rvalues, and
std::move - Virtual Destructors, Object Slicing, and vtable basics
- Exception Safety
- Low-Level Design (LLD)
- Stack vs heap memory
- Pointers, references,
constcorrectness, andnullptr— pointers.cpp - RAII and resource management — RAII.cpp
- Smart pointers:
unique_ptr,shared_ptr, andweak_ptr— Shared_pointers.cpp - Rule of 3, Rule of 5, and Rule of 0
- Move constructor and move assignment
- Lvalues, rvalues, and
std::move - Virtual destructor, object slicing, and virtual table basics
- Diamond problem and virtual inheritance
- Exception handling and exception safety
-
static,const,constexpr, andinline - Casting:
static_cast,dynamic_cast,const_cast, andreinterpret_cast - Lambdas and modern C++ features
- OOP design principles and composition over inheritance
- SOLID principles
- Cohesion, coupling, and separation of concerns
- Interfaces and dependency inversion
- UML class diagrams and relationships
- Designing extensible and testable classes
- Creational design patterns: Factory, Builder, and Singleton
- Structural design patterns: Adapter, Decorator, Facade, and Composite
- Behavioral design patterns: Strategy, Observer, State, and Command
- Thread-safe design and basic concurrency
- Error handling, validation, and edge-case design
- LLD case studies: parking lot, elevator, library, and vending machine
- Parking Lot Management System
- Apply OOP, SOLID, smart pointers, design patterns, and LLD principles.
- Implement vehicles, parking spots, floors, tickets, payments, and entry/exit flow.
- Learned so far: Access modifiers, encapsulation, classes and objects, all major inheritance types, constructors, destructors, and polymorphism.
- Next in line: Rule of 3, Rule of 5, Rule of 0, and move semantics.
- Final project: Parking Lot Management System.
- Goal: finish the remaining OOPs topics from the syllabus and revise with practice programs.
This is a personal academic and learning repository focused on deep understanding of OOPs in C++.