OOP Basics
this Pointer
Current Object Ka Reference
💡 this ek self-reference hai — jaise koi apne baare mein baat karte waqt "main" bolta hai. Har member function ke andar, this "current object" ko point karta hai jis par function call hua hai.
this ek implicit pointer hai jo har non-static member function ke andar automatically available hota hai — us specific object ka address hai jispar function call hua. Usually explicitly likhne ki zaroorat nahi (compiler khud samajh leta hai), lekin kuch cases mein zaroori ho jaata hai.
Common use: jab parameter ka naam member variable jaisa hi ho (naming clash), this-> se explicitly member ko refer karo. Doosra use: method chaining ke liye *this return karna (jaise obj.setX(5).setY(10);).
class Point {
public:
int x, y;
Point(int x, int y) {
this->x = x; // this->x = member, x = parameter (naming clash resolve)
this->y = y;
}
Point& setX(int x) {
this->x = x;
return *this; // method chaining ke liye current object return
}
};
int main() {
Point p(1, 2);
p.setX(10).setX(20); // chaining — setX() *this return karta hai
cout << p.x << endl; // 20
return 0;
}👆
this ek self-reference hai — jaise koi apne baare mein baat karte waqt "main" bolta hai. Har member function ke andar, this "current object" ko point karta hai jis par function call hua hai.
1 / 2
⚡ Quick Recap
- this = current object ka implicit pointer
- Naming clash resolve karne ke liye use hota hai (this->x)
- *this return karke method chaining possible hai
On this page (1 subtopics)
Method chaining (obj.a().b().c()) tabhi possible hai jab har method *this ko REFERENCE se return kare (ClassName&), value se nahi — value se return karne par har chain step ek nayi copy banaega, jo inefficient hai aur intended behavior nahi.
class Builder {
string result;
public:
Builder& add(string s) { // reference return — zaroori chaining ke liye
result += s;
return *this;
}
string get() { return result; }
};
int main() {
Builder b;
string s = b.add("Hello ").add("World").get();
cout << s << endl; // "Hello World"
return 0;
}Tip: Ye pattern ("fluent interface") bahut popular hai builder-style APIs mein — jaise SQL query builders, ya string stream chaining (cout << a << b).