🧩
OOP Basics

Classes & Objects

Blueprint & Instance
💡 Class ek blueprint hai (jaise ghar ka naksha) — Object us blueprint se bana asli ghar hai. Ek blueprint se kitne bhi ghar (objects) bana sakte ho, har ek apna alag data (rang, furniture) rakhta hai lekin same structure follow karta hai.

Class ek user-defined type hai jo data (member variables) aur uspar kaam karne wale functions (member functions/methods) ko ek saath group karta hai — real-world cheezon ko naturally model karne ka tareeka. Object class ka ek "instance" hai — actual memory mein banaya gaya, apne data ke saath.

Class ke members access karne ke liye dot (.) operator use hota hai (object ke through), jaise struct mein hota tha. Farq ye hai ki class ke members ko access control (public/private) mil sakta hai — ye C++ ki "encapsulation" ka foundation hai.

class Car {
  public:
    string brand;
    int speed;

    void drive() {
      cout << brand << " chal raha hai " << speed << " km/h par" << endl;
    }
};

int main() {
  Car car1;              // object banaya
  car1.brand = "Toyota";
  car1.speed = 80;
  car1.drive();           // "Toyota chal raha hai 80 km/h par"

  Car car2;               // ek aur, independent object
  car2.brand = "Honda";
  car2.speed = 100;
  car2.drive();
  return 0;
}
🧩
Class ek blueprint hai (jaise ghar ka naksha) — Object us blueprint se bana asli ghar hai. Ek blueprint se kitne bhi ghar (objects) bana sakte ho, har ek apna alag data (rang, furniture) rakhta hai lekin same structure follow karta hai.
1 / 6
⚡ झट से Recap
  • Class = blueprint, Object = actual instance
  • Members access karne ke liye dot (.) operator
  • Ek class se multiple, independent objects ban sakte hain
इस page में (2 subtopics)

Objects normally stack par banaye jaate hain (Car car1;) — function khatam hote hi automatically destroy hote hain. Heap par bhi banaye ja sakte hain (new Car()) — manually delete karna padta hai, lekin function khatam hone ke baad bhi zinda rehte hain.

Car stackCar;              // stack — automatic cleanup

Car *heapCar = new Car();  // heap — manual cleanup zaroori
heapCar->drive();
delete heapCar;             // warna memory leak
💡Tip: Jab tak zaroorat na ho (object ko function se bahar zinda rakhna ho), stack objects prefer karo — automatic cleanup safer aur simpler hai.

Struct ki tarah, class ke objects ka array bhi bana sakte ho — har element apna alag data rakhta hai, lekin sab same class structure follow karte hain.

class Point {
  public:
    int x, y;
};

int main() {
  Point points[3];
  points[0].x = 1; points[0].y = 2;
  points[1].x = 3; points[1].y = 4;

  for (int i = 0; i < 2; i++) {
    cout << points[i].x << "," << points[i].y << endl;
  }
  return 0;
}
💡Tip: Agar class ka default constructor nahi hai (sirf parameterized), array of objects banate waqt compile error aayega — array declare karte waqt default constructor chahiye hota hai.