Inheritance — Basics
Inheritance ek class (derived/child) ko doosri class (base/parent) ke members (variables + functions) automatically "inherit" karne deta hai — code reuse ka powerful tareeka, jaise "Car" aur "Bike" dono "Vehicle" ki common properties (speed, brand) inherit kar sakte hain, bina unhe dobara likhe.
Syntax: class Derived : public Base { ... }. "public" inheritance ka matlab hai Base ke public members, Derived mein bhi public rehte hain — ye sabse common type hai.
class Vehicle {
public:
string brand;
void honk() { cout << "Beep!" << endl; }
};
class Car : public Vehicle { // Car, Vehicle ko inherit karta hai
public:
int doors;
};
int main() {
Car myCar;
myCar.brand = "Toyota"; // Vehicle se inherit hua
myCar.doors = 4; // Car ka apna member
myCar.honk(); // Vehicle ka method, Car use kar sakta hai
return 0;
}- Derived class, Base class ke members automatically paata hai
- class Derived : public Base { }
- Code reuse ka powerful tareeka — "is-a" relationships ke liye
Inheritance type (public/protected/private) decide karta hai base class ke members derived class mein KITNI accessibility rakhte hain. public inheritance (sabse common) mein access levels same rehte hain. protected/private inheritance rare hain, aur base ke public members ko bhi derived mein zyada restrict kar dete hain.
class Base {
public: int a;
protected: int b;
};
class PublicDerived : public Base {
// a is still public, b is still protected
};
class PrivateDerived : private Base {
// a AND b dono ab private ho jaate hain PrivateDerived mein
};Jab derived class ka object banta hai, sabse pehle BASE class ka constructor chalta hai, uske baad DERIVED class ka. Destructor mein order ulta hota hai — pehle derived, phir base. Ye "construction bottom-up, destruction top-down" pattern hai.
class Base {
public: Base() { cout << "Base constructor\n"; }
};
class Derived : public Base {
public: Derived() { cout << "Derived constructor\n"; }
};
int main() {
Derived d;
// Output:
// Base constructor
// Derived constructor
return 0;
}