this Pointer in C++ Notes | this Keyword, Uses, Advantages & Examples | Basic Computer Engineering | RGPV BTech First Year

this Pointer in C++ Notes | this Keyword, Uses, Advantages & Examples | Basic Computer Engineering | RGPV BTech First Year


this Pointer in C++

this Pointer C++ का एक विशेष (Special) Pointer है जो प्रत्येक Non-Static Member Function के भीतर स्वतः (Automatically) उपलब्ध होता है। यह Pointer वर्तमान Object (Current Object) का Address Store करता है जिसके माध्यम से Member Function Call किया गया है।

जब किसी Class के अनेक Objects बनाए जाते हैं और प्रत्येक Object द्वारा समान Member Function Call किया जाता है, तब this Pointer Compiler को यह पहचानने में सहायता करता है कि वर्तमान Function किस Object के लिए Execute हो रहा है।

RGPV B.Tech First Year के Basic Computer Engineering Subject में this Pointer एक महत्वपूर्ण Topic है। University Examination, Practical तथा Viva में इसकी Definition, Syntax, Uses, Programs तथा Method Chaining से संबंधित प्रश्न अक्सर पूछे जाते हैं।

Object



Member Function



this Pointer



Current Object Address

Introduction to this Pointer

Object Oriented Programming में एक ही Class के अनेक Objects बनाए जा सकते हैं। प्रत्येक Object के अपने अलग-अलग Data Members होते हैं, जबकि सभी Objects समान Member Functions का उपयोग करते हैं।

जब कोई Member Function Execute होता है, तब Compiler को यह पता होना चाहिए कि Function किस Object के Data पर कार्य करेगा। इस समस्या का समाधान this Pointer द्वारा किया जाता है। यह Pointer वर्तमान Object का Address उपलब्ध कराता है।


What is this Pointer?

this Pointer एक Hidden Pointer है जिसे Compiler प्रत्येक Non-Static Member Function में Automatically उपलब्ध कराता है। यह Pointer वर्तमान Object (Current Object) का Address Store करता है।

this

ऊपर दिया गया Keyword वर्तमान Object का Pointer दर्शाता है। इसकी सहायता से Object के Data Members तथा Member Functions को Access किया जा सकता है।


Need of this Pointer

जब Member Function के Parameters तथा Class के Data Members का नाम समान हो, अथवा वर्तमान Object का Address Return करना हो, तब this Pointer अत्यंत उपयोगी होता है।

  • Current Object का Address प्राप्त करने के लिए।
  • Local Variable तथा Data Member के बीच अंतर स्पष्ट करने के लिए।
  • Method Chaining लागू करने के लिए।
  • Current Object Return करने के लिए।
  • Large Object Oriented Programs में Code को स्पष्ट बनाने के लिए।
  • Operator Overloading एवं Advanced Programming में उपयोग के लिए।
  • Professional Software Development में Object Identification के लिए।

Advantages of this Pointer

Advantage Description
Current Object Access वर्तमान Object का Address प्राप्त किया जा सकता है।
Name Conflict Resolution Local Variables तथा Data Members के बीच अंतर स्पष्ट करता है।
Method Chaining एक के बाद एक Member Functions Call करना आसान बनाता है।
Object Returning Current Object Return किया जा सकता है।
Better Readability Code अधिक स्पष्ट एवं Maintainable बनता है।

Characteristics of this Pointer

this Pointer की कई महत्वपूर्ण विशेषताएँ (Characteristics) हैं जो इसे C++ के अन्य Pointers से अलग बनाती हैं। यह प्रत्येक Non-Static Member Function में स्वतः उपलब्ध होता है तथा वर्तमान Object का Address Store करता है।

  • यह एक Special Hidden Pointer होता है।
  • Compiler इसे Automatically उपलब्ध कराता है।
  • यह Current Object का Address Store करता है।
  • यह केवल Non-Static Member Functions में उपलब्ध होता है।
  • Static Member Functions में this Pointer उपलब्ध नहीं होता।
  • Method Chaining तथा Object Returning में उपयोग किया जाता है।
  • Object Oriented Programming में Code को अधिक स्पष्ट बनाता है।

Syntax of this Pointer

this Pointer का उपयोग Current Object के Data Members अथवा Member Functions को Access करने के लिए किया जाता है।

this->dataMember this->memberFunction()

ऊपर दिए गए Syntax में this वर्तमान Object को तथा -> Operator Member को Access करने के लिए उपयोग किया जाता है।


Example of this Pointer

#include<iostream> using namespace std; class Student { int roll; public: void setRoll(int roll) { this->roll = roll; } void display() { cout << this->roll; } }; int main() { Student s; s.setRoll(101); s.display(); return 0; }

Output

101

ऊपर दिए गए Program में Function Parameter तथा Data Member दोनों का नाम roll है। this->roll वर्तमान Object के Data Member को Refer करता है, जबकि roll Parameter की Value को दर्शाता है।


Resolving Name Conflict using this Pointer

यदि Function Parameter तथा Class के Data Member का नाम समान हो, तो Compiler Confusion से बचने के लिए this Pointer का उपयोग किया जाता है।

class Demo { int value; public: void setValue(int value) { this->value = value; } };

इस उदाहरण में this->value Class के Data Member को तथा value Function Parameter को दर्शाता है।


Working of this Pointer

Object



Member Function



this Pointer



Current Object Address



Access Data Members

जब किसी Object द्वारा Member Function Call किया जाता है, तब Compiler उस Object का Address this Pointer में Store करता है। इसके बाद Function उसी Object के Data Members पर कार्य करता है।


Advantages of using this Pointer

  • Current Object का Address आसानी से प्राप्त किया जा सकता है।
  • Data Members एवं Function Parameters के बीच Name Conflict समाप्त हो जाता है।
  • Method Chaining को Implement करना आसान हो जाता है।
  • Current Object Return किया जा सकता है।
  • Code अधिक Readable एवं Maintainable बनता है।
  • Advanced Object Oriented Programming Techniques में उपयोगी है।

Returning Object using this Pointer

this Pointer का उपयोग वर्तमान Object (Current Object) को Return करने के लिए भी किया जाता है। जब किसी Member Function के अंत में return *this; लिखा जाता है, तब वर्तमान Object Return होता है। इसका उपयोग विशेष रूप से Method Chaining तथा Fluent Interface Design में किया जाता है।

return *this;

यहाँ *this वर्तमान Object को दर्शाता है जबकि this केवल उसका Address Return करता है।


Example of Returning Object using this Pointer

#include<iostream> using namespace std; class Demo { int value; public: Demo() { value = 0; } Demo& setValue(int value) { this->value = value; return *this; } void display() { cout << value; } }; int main() { Demo d; d.setValue(200).display(); return 0; }

Output

200

ऊपर दिए गए उदाहरण में setValue() वर्तमान Object को Return कर रहा है, इसलिए उसी Object पर तुरंत display() Function Call किया जा सकता है।


Method Chaining

Method Chaining ऐसी तकनीक है जिसमें एक Member Function के बाद दूसरा Member Function लगातार Call किया जाता है। इसे Implement करने के लिए सामान्यतः return *this; का उपयोग किया जाता है।

object.function1().function2().function3();

Method Chaining से Code छोटा, स्पष्ट तथा अधिक Professional दिखाई देता है।


Uses of this Pointer

  • Current Object का Address प्राप्त करने के लिए।
  • Data Member तथा Local Variable के बीच Name Conflict समाप्त करने के लिए।
  • Current Object Return करने के लिए।
  • Method Chaining लागू करने के लिए।
  • Operator Overloading में वर्तमान Object को Refer करने के लिए।
  • Large Object Oriented Applications में Object Identification के लिए।
  • Professional Software Development में Fluent Interface बनाने के लिए।

Advantages of Returning *this

Advantage Description
Method Chaining एक के बाद एक Functions आसानी से Call किए जा सकते हैं।
Readable Code Program अधिक साफ़ एवं समझने योग्य बनता है।
Code Reusability एक ही Object पर Multiple Operations किए जा सकते हैं।
Professional Design Fluent Interface तथा Builder Pattern में उपयोगी।
Easy Maintenance Program का Maintenance सरल हो जाता है।

this Pointer vs Normal Pointer

this Pointer Normal Pointer
Compiler द्वारा Automatically उपलब्ध कराया जाता है। Programmer द्वारा Declare किया जाता है।
Current Object का Address Store करता है। किसी भी Variable या Object का Address Store कर सकता है।
केवल Non-Static Member Functions में उपलब्ध होता है। Program में कहीं भी Declare किया जा सकता है।
Delete नहीं किया जा सकता। आवश्यकता अनुसार Modify या Delete किया जा सकता है।
Current Object से संबंधित होता है। किसी भी Memory Location को Point कर सकता है।

Applications of this Pointer

this Pointer का उपयोग आधुनिक Object Oriented Programming में अनेक महत्वपूर्ण कार्यों के लिए किया जाता है। यह Current Object की पहचान करने, Method Chaining लागू करने तथा Fluent Interface विकसित करने में अत्यंत उपयोगी होता है।

Application Purpose
Name Conflict Resolution Data Members एवं Function Parameters के समान नाम होने पर Confusion समाप्त करना।
Method Chaining एक ही Object पर लगातार कई Member Functions Call करना।
Operator Overloading Current Object को Return करके Efficient Operator Implementation करना।
Fluent Interface Readable तथा Professional Programming Style विकसित करना।
Object Returning Current Object को Return करके Multiple Operations करना।
Library Development Reusable Class Libraries एवं Frameworks विकसित करना।

Limitations of this Pointer

यद्यपि this Pointer अत्यंत उपयोगी Feature है, फिर भी इसकी कुछ सीमाएँ (Limitations) हैं जिनका ध्यान रखना आवश्यक होता है।

  • Static Member Functions में this Pointer उपलब्ध नहीं होता।
  • Global Functions में इसका उपयोग नहीं किया जा सकता।
  • Static Objects के बजाय यह केवल Current Object को Refer करता है।
  • गलत Pointer Handling से Program में Logical Errors उत्पन्न हो सकते हैं।
  • अनावश्यक उपयोग से Code की Readability कम हो सकती है।
  • Object Destroy होने के बाद उसका Address उपयोग नहीं करना चाहिए।

Best Practices for using this Pointer

  • केवल आवश्यकता होने पर ही this Pointer का उपयोग करें।
  • Name Conflict होने पर this-> का प्रयोग अवश्य करें।
  • Method Chaining के लिए return *this; का उपयोग करें।
  • Current Object Return करते समय Reference Return करना बेहतर Practice है।
  • Static Member Functions में this Pointer का उपयोग न करें।
  • Readable तथा Maintainable Code लिखने पर ध्यान दें।
  • Object Lifetime समाप्त होने के बाद उसके Address का उपयोग न करें।

Real Life Example

मान लीजिए किसी Bank Management System में Account Class का setAccountDetails() Function Account Number, Holder Name तथा Balance Set करता है। यदि Function Parameters तथा Data Members के नाम समान हों, तो this Pointer का उपयोग करके सही Data Member को Value Assign की जाती है। इसी प्रकार return *this; द्वारा Multiple Functions को लगातार Call करके Method Chaining भी लागू की जा सकती है।


Working of this Pointer

Object Created



Member Function Called



Compiler creates this Pointer



Current Object Address



Access Data Members



Return Result

जब किसी Object द्वारा Member Function Call किया जाता है, तब Compiler स्वतः this Pointer उपलब्ध कराता है। यह Pointer वर्तमान Object का Address Store करता है, जिससे Function उसी Object के Data Members पर कार्य करता है तथा आवश्यक परिणाम Return करता है।


Applications of this Pointer in Real World

this Pointer का उपयोग आधुनिक Object Oriented Programming तथा Professional Software Development में व्यापक रूप से किया जाता है। विशेष रूप से Method Chaining, Builder Pattern, Operator Overloading तथा Object Returning जैसी Advanced Programming Techniques में इसका महत्वपूर्ण योगदान होता है।

Application Purpose
Method Chaining एक ही Object पर लगातार कई Member Functions Call करना।
Builder Pattern Complex Objects को Step-by-Step Create करना।
Operator Overloading Current Object Return करके Efficient Operator Implementation करना।
Library Development Reusable Classes एवं Frameworks विकसित करना।
GUI Applications Current Window या Control Object को Refer करना।
Database Applications Current Record Object पर Operations करना।

Advantages of this Pointer

  • Current Object का Address आसानी से प्राप्त किया जा सकता है।
  • Function Parameters तथा Data Members के बीच Name Conflict समाप्त हो जाता है।
  • Method Chaining को सरल बनाता है।
  • Current Object Return करना संभव बनाता है।
  • Fluent Interface Design विकसित करने में सहायता करता है।
  • Object Oriented Programming की Readability बढ़ाता है।
  • Professional Software Development में अत्यंत उपयोगी है।

Limitations of this Pointer

  • Static Member Functions में उपलब्ध नहीं होता।
  • Global Functions में उपयोग नहीं किया जा सकता।
  • केवल Current Object को Refer करता है।
  • गलत Object Lifetime Management से Logical Errors हो सकते हैं।
  • अत्यधिक उपयोग से Code की Readability कम हो सकती है।
  • Object Destroy होने के बाद उसका Address उपयोग करना Unsafe होता है।

Best Practices

  • केवल आवश्यकता होने पर ही this Pointer का उपयोग करें।
  • Data Member तथा Parameter का नाम समान होने पर this-> का प्रयोग करें।
  • Method Chaining के लिए return *this; का उपयोग करें।
  • Current Object Return करते समय Reference Return करना बेहतर Practice है।
  • Static Member Functions में this Pointer का उपयोग न करें।
  • Readable एवं Maintainable Code लिखें।
  • Object Lifetime का विशेष ध्यान रखें।

Real Life Example

मान लीजिए किसी Student Management System में setName(), setRoll() तथा setBranch() जैसे Functions उपलब्ध हैं। यदि प्रत्येक Function return *this; Return करे, तो Programmer निम्न प्रकार Method Chaining का उपयोग कर सकता है:

student.setName("Rahul") .setRoll(101) .setBranch("CSE");

इस प्रकार Code छोटा, साफ़ तथा अधिक Professional दिखाई देता है। यही Technique आधुनिक Libraries तथा Frameworks में व्यापक रूप से उपयोग की जाती है।


Working of this Pointer

Object Created



Member Function Called



Compiler Passes this Pointer



Current Object Address



Access Object Members



Execute Function



Return Current Object (Optional)

Summary

this Pointer C++ का एक विशेष Pointer है जो प्रत्येक Non-Static Member Function के भीतर स्वतः उपलब्ध होता है। यह वर्तमान Object (Current Object) का Address Store करता है तथा उसी Object के Data Members एवं Member Functions पर कार्य करने में सहायता करता है। Name Conflict Resolve करने, Current Object Return करने, Method Chaining लागू करने तथा Fluent Interface Design विकसित करने के लिए इसका व्यापक उपयोग किया जाता है। आधुनिक Object Oriented Programming में यह अत्यंत महत्वपूर्ण Feature माना जाता है।

Concept Description
this Pointer Current Object का Address Store करने वाला Special Pointer।
Availability केवल Non-Static Member Functions में उपलब्ध होता है।
Purpose Current Object की पहचान करना तथा उसके Members को Access करना।
Method Chaining return *this; द्वारा एक के बाद एक Functions Call करना।
Name Conflict Data Members तथा Function Parameters के समान नाम होने पर Confusion समाप्त करना।
this Pointer Compiler द्वारा Automatically उपलब्ध कराया जाता है।
Applications Method Chaining, Builder Pattern, Operator Overloading तथा Library Development।
Advantages Readable Code, Current Object Access तथा Better Object Management।

Important Viva Questions

  1. this Pointer क्या है?
  2. this Pointer किस प्रकार का Pointer है?
  3. this Pointer कहाँ उपलब्ध होता है?
  4. क्या Static Member Function में this Pointer उपलब्ध होता है?
  5. this Pointer का उपयोग Name Conflict Resolve करने में कैसे किया जाता है?
  6. Method Chaining क्या है?
  7. return *this; का क्या अर्थ है?
  8. this Pointer तथा Normal Pointer में क्या अंतर है?
  9. Current Object Return करने का क्या लाभ है?
  10. this Pointer के मुख्य Applications क्या हैं?

University Examination Important Questions

  1. this Pointer क्या है? उदाहरण सहित समझाइए।
  2. this Pointer की आवश्यकता स्पष्ट कीजिए।
  3. this Pointer का Syntax तथा Program लिखिए।
  4. Method Chaining को this Pointer की सहायता से समझाइए।
  5. return *this; का उपयोग उदाहरण सहित स्पष्ट कीजिए।
  6. this Pointer तथा Normal Pointer में अंतर लिखिए।
  7. Static Member Function में this Pointer उपलब्ध क्यों नहीं होता?
  8. this Pointer के Advantages एवं Limitations लिखिए।
  9. Object Returning में this Pointer की भूमिका समझाइए।
  10. Professional Software Development में this Pointer के Applications लिखिए।

Exam Tips

  • हमेशा याद रखें कि this Pointer केवल Non-Static Member Functions में उपलब्ध होता है।
  • Static Member Function में this Pointer उपलब्ध नहीं होता।
  • यदि Function Parameter तथा Data Member का नाम समान हो, तो this->variable का उपयोग करें।
  • return *this; वर्तमान Object Return करता है, जबकि this केवल उसका Address Return करता है।
  • Method Chaining के लिए Member Function का Return Type सामान्यतः Object Reference (ClassName&) रखा जाता है।
  • RGPV Practical एवं Viva में Name Conflict तथा Method Chaining का Program अक्सर पूछा जाता है।
  • this Pointer तथा Normal Pointer के Differences परीक्षा की दृष्टि से अत्यंत महत्वपूर्ण हैं।

Conclusion

this Pointer C++ Object Oriented Programming का एक अत्यंत महत्वपूर्ण Feature है जो Current Object की पहचान करने, Data Members को Access करने तथा Method Chaining जैसी Advanced Programming Techniques को Implement करने में सहायता करता है। यह Code की Readability, Reusability तथा Maintainability को बेहतर बनाता है। Builder Pattern, Fluent Interface, Operator Overloading, GUI Frameworks तथा Enterprise Applications में इसका व्यापक उपयोग किया जाता है। RGPV B.Tech First Year के विद्यार्थियों के लिए this Pointer Theory, Practical एवं Viva तीनों दृष्टिकोण से अत्यंत महत्वपूर्ण Topic है।

Related Articles

Arrays of Objects in C++ Notes | Object Array, Declaration, Initialization & Examples | Basic Computer Engineering | RGPV BTech First Year

Arrays ...

Read More →

Object as Function Argument & Returning Object from Function in C++ Notes | Pass Object to Function, Return Object & Examples | Basic Computer Engineering | RGPV BTech First Year

Object ...

Read More →

Pointers to Objects in C++ Notes | Object Pointer, Accessing Members using Pointer & Examples | Basic Computer Engineering | RGPV BTech First Year

Pointer...

Read More →

Dynamic Memory Allocation in C++ Notes | new & delete Operators, Heap Memory, Dynamic Objects & Examples | Basic Computer Engineering | RGPV BTech First Year

Dynamic...

Read More →

Static Data Members & Static Member Functions in C++ Notes | Static Keyword, Static Variables, Static Functions & Examples | Basic Computer Engineering | RGPV BTech First Year

Static ...

Read More →