Static Data Member, Static Member Function & this Pointer in C++ Notes | Static Keyword, this Pointer, Advantages & Applications | Basic Computer Engineering | RGPV BTech First Year
Static Data Member, Static Member Function & this Pointer in C++ Notes | Static Keyword, this Pointer, Advantages & Applications | Basic Computer Engineering | RGPV BTech First Year
Static Data Member, Static Member Function & this Pointer in C++
Static Keyword C++ Programming का एक अत्यंत महत्वपूर्ण Keyword है जिसका उपयोग Memory Management तथा Class Level Data को नियंत्रित (Manage) करने के लिए किया जाता है। Static Keyword की सहायता से ऐसे Members बनाए जा सकते हैं जो किसी एक Object के लिए नहीं बल्कि पूरी Class के लिए Common होते हैं।
इसी प्रकार this Pointer C++ का एक विशेष Pointer है जो वर्तमान Object (Current Object) का Address Store करता है। प्रत्येक Non-static Member Function के अंदर यह Pointer Automatically उपलब्ध रहता है और वर्तमान Object के Data Members को Refer करने के लिए उपयोग किया जाता है।
RGPV B.Tech First Year के Basic Computer Engineering Subject में Static Data Member, Static Member Function तथा this Pointer अत्यंत महत्वपूर्ण Topics हैं। University Examination, Practical तथा Viva में Static Keyword, Static Data Member, Static Member Function एवं this Pointer से संबंधित प्रश्न नियमित रूप से पूछे जाते हैं।
↓
Static Members
↓
Common Memory
↓
All Objects
Introduction to Static Keyword
सामान्यतः किसी Class के प्रत्येक Object के लिए अलग-अलग Memory Allocate होती है। यदि Class के किसी Member को सभी Objects के बीच Common रखना हो, तो static Keyword का उपयोग किया जाता है।
Static Member केवल एक बार Memory प्राप्त करता है तथा उसी Memory को Class के सभी Objects Share करते हैं। इससे Memory की बचत होती है तथा Common Information को Efficient तरीके से Manage किया जा सकता है।
What is Static Data Member?
Static Data Member ऐसा Data Member होता है जिसे static Keyword द्वारा Declare किया जाता है। इसकी केवल एक ही Copy Memory में रहती है और Class के सभी Objects उसी Copy को Share करते हैं।
ऊपर दिए गए उदाहरण में count Static Data Member है। चाहे Student Class के कितने भी Objects बनाए जाएँ, count की केवल एक ही Copy Memory में रहेगी।
Need of Static Data Member
जब किसी Class के सभी Objects के लिए समान (Common) Data Maintain करना हो, तब Static Data Member का उपयोग किया जाता है। उदाहरण के लिए Object Count, Company Name, Interest Rate, Tax Rate आदि सभी Objects के लिए समान हो सकते हैं।
- सभी Objects के लिए Common Data Store करने के लिए।
- Memory की बचत करने के लिए।
- Object Counting के लिए।
- Class Level Information Maintain करने के लिए।
- Common Configuration Values Store करने के लिए।
- Large Software Systems में Shared Data Manage करने के लिए।
- Efficient Memory Utilization के लिए।
Advantages of Static Data Member
| Advantage | Description |
|---|---|
| Single Memory Allocation | Memory केवल एक बार Allocate होती है। |
| Memory Saving | सभी Objects एक ही Data Copy Share करते हैं। |
| Common Data | पूरी Class के लिए समान Data Maintain किया जा सकता है। |
| Easy Management | Shared Information को सरलता से Manage किया जा सकता है। |
| Better Performance | Memory Utilization अधिक Efficient हो जाती है। |
Characteristics of Static Data Member
Static Data Member की कुछ महत्वपूर्ण विशेषताएँ (Characteristics) होती हैं जो इसे सामान्य Data Member से अलग बनाती हैं। Static Data Member पूरी Class के लिए Common होता है तथा इसकी केवल एक ही Copy Memory में रहती है।
- Static Data Member की केवल एक Copy Memory में रहती है।
- Class के सभी Objects उसी Copy को Share करते हैं।
- Memory Object बनने से पहले Allocate हो जाती है।
- Static Data Member का Lifetime पूरे Program के दौरान रहता है।
- इसे Class के बाहर Define करना आवश्यक होता है।
- इसे Class Name द्वारा भी Access किया जा सकता है।
- Memory की बचत होती है क्योंकि प्रत्येक Object के लिए अलग Copy नहीं बनती।
Rules of Static Data Member
Static Data Member Declare एवं Use करते समय C++ के कुछ महत्वपूर्ण नियमों का पालन करना आवश्यक होता है।
| Rule | Description |
|---|---|
| Use static Keyword | Declaration के समय static Keyword का उपयोग किया जाता है। |
| Single Copy | पूरी Class के लिए केवल एक ही Memory Copy रहती है। |
| External Definition | Class के बाहर Static Member को Define करना आवश्यक होता है। |
| Class Access | इसे Class Name द्वारा भी Access किया जा सकता है। |
| Program Lifetime | पूरे Program के समाप्त होने तक Memory बनी रहती है। |
Syntax of Static Data Member
Static Data Member Declare करने की सामान्य Syntax नीचे दी गई है।
ऊपर दिए गए उदाहरण में count Static Data Member है तथा इसे Class के बाहर Define किया गया है।
Program using Static Data Member
Output
इस उदाहरण में तीन Objects बनाए गए हैं, लेकिन count की केवल एक Copy Memory में रहती है। प्रत्येक Object बनने पर Constructor द्वारा count की Value बढ़ाई जाती है।
Static Data Member vs Normal Data Member
| Static Data Member | Normal Data Member |
|---|---|
| पूरी Class के लिए Common होता है। | प्रत्येक Object की अलग Copy होती है। |
| केवल एक बार Memory Allocate होती है। | हर Object के लिए अलग Memory Allocate होती है। |
| Class Name द्वारा Access किया जा सकता है। | केवल Object द्वारा Access किया जाता है। |
| Program के अंत तक Memory बनी रहती है। | Object Destroy होने पर Memory समाप्त हो जाती है। |
| Memory Saving होती है। | Memory अधिक उपयोग होती है। |
Static Member Function
Static Member Function ऐसा Member Function होता है जिसे static Keyword द्वारा Declare किया जाता है। यह Function केवल Static Data Members को सीधे Access कर सकता है तथा इसे Object बनाए बिना भी Class Name की सहायता से Call किया जा सकता है।
Static Member Function किसी विशेष Object से संबंधित नहीं होता, बल्कि पूरी Class के लिए Common होता है। इसलिए इसमें this Pointer उपलब्ध नहीं होता।
Syntax of Static Member Function
ऊपर दिए गए उदाहरण में display() एक Static Member Function है।
Characteristics of Static Member Function
- इसे static Keyword द्वारा Declare किया जाता है।
- यह केवल Static Data Members को सीधे Access कर सकता है।
- Non-static Data Members को सीधे Access नहीं कर सकता।
- इसे Object बनाए बिना Call किया जा सकता है।
- इसे ClassName::FunctionName() द्वारा Access किया जाता है।
- इसमें this Pointer उपलब्ध नहीं होता।
- पूरी Class के लिए केवल एक ही Function होता है।
Program using Static Member Function
Output
इस उदाहरण में display() Function को Object के बिना सीधे Student::display() द्वारा Call किया गया है।
Rules of Static Member Function
| Rule | Description |
|---|---|
| Object Not Required | Object बनाए बिना Call किया जा सकता है। |
| Static Members Only | केवल Static Members को सीधे Access करता है। |
| No this Pointer | this Pointer उपलब्ध नहीं होता। |
| Class Scope Resolution | ClassName::FunctionName() द्वारा Call किया जाता है। |
| Single Copy | पूरी Class के लिए केवल एक ही Function रहता है। |
Advantages of Static Member Function
- Object बनाए बिना Function Call किया जा सकता है।
- Static Data Members को आसानी से Manage किया जा सकता है।
- Memory की बचत होती है।
- Class Level Operations के लिए उपयुक्त है।
- Common Utility Functions विकसित किए जा सकते हैं।
- Program अधिक Organized बनता है।
Introduction to this Pointer
this Pointer C++ का एक विशेष (Special) Pointer है जो वर्तमान Object (Current Object) का Address Store करता है। प्रत्येक Non-static Member Function के अंदर Compiler Automatically this Pointer उपलब्ध कराता है।
जब किसी Member Function को किसी Object द्वारा Call किया जाता है, तब this Pointer उसी Object की ओर संकेत (Point) करता है। इसकी सहायता से वर्तमान Object के Data Members एवं Member Functions को Refer किया जा सकता है।
Need of this Pointer
this Pointer का उपयोग तब किया जाता है जब Member Function को वर्तमान Object का Address प्राप्त करना हो अथवा Function Parameters तथा Data Members के समान नाम होने पर दोनों में अंतर करना हो।
- Current Object का Address प्राप्त करने के लिए।
- Data Members एवं Parameters के समान नाम होने पर Difference बताने के लिए।
- Member Functions के बीच Object Return करने के लिए।
- Method Chaining Implement करने के लिए।
- Current Object को दूसरे Function में Pass करने के लिए।
- Object Oriented Programming में Self Reference प्राप्त करने के लिए।
Characteristics of this Pointer
- यह प्रत्येक Non-static Member Function में Automatically उपलब्ध होता है।
- यह वर्तमान Object का Address Store करता है।
- इसका Data Type ClassName * होता है।
- Static Member Functions में this Pointer उपलब्ध नहीं होता।
- एक समय में यह केवल वर्तमान Object को Refer करता है।
- Compiler स्वयं इसका निर्माण करता है।
- Programmer को इसे अलग से Declare करने की आवश्यकता नहीं होती।
Syntax of this Pointer
ऊपर दिए गए Syntax में this-> वर्तमान Object के Members को Refer करता है।
Program using this Pointer
Output
ऊपर दिए गए Program में Function Parameter तथा Data Member दोनों का नाम roll है। इसलिए this->roll वर्तमान Object के Data Member को Refer कर रहा है।
Static Member Function vs Normal Member Function
| Static Member Function | Normal Member Function |
|---|---|
| Object बनाए बिना Call किया जा सकता है। | Object द्वारा Call किया जाता है। |
| केवल Static Members को सीधे Access करता है। | Static तथा Non-static दोनों Members को Access कर सकता है। |
| this Pointer उपलब्ध नहीं होता। | this Pointer Automatically उपलब्ध होता है। |
| Class Level Operations के लिए उपयोगी। | Object Level Operations के लिए उपयोगी। |
| ClassName::Function() द्वारा Call किया जाता है। | Object.Function() द्वारा Call किया जाता है। |
Applications of Static Data Member
Static Data Member का उपयोग उन परिस्थितियों में किया जाता है जहाँ किसी Class के सभी Objects के लिए एक ही Common Data Maintain करना आवश्यक हो। इससे Memory की बचत होती है तथा Program अधिक Efficient बनता है।
| Application | Purpose |
|---|---|
| Object Counter | Class के कुल Objects की संख्या Store करना। |
| Company Information | सभी Employees के लिए समान Company Name रखना। |
| Interest Rate | Bank की Common Interest Rate Maintain करना। |
| Configuration Settings | पूरे Program के लिए समान Configuration रखना। |
| Game Development | Global Game Score या Level Information Maintain करना। |
Applications of Static Member Function
Static Member Function का उपयोग Class Level Operations करने के लिए किया जाता है। यह Function Object बनाए बिना Call किया जा सकता है और सामान्यतः Static Data Members को Manage करने के लिए उपयोग किया जाता है।
- Object Count Display करने के लिए।
- Common Utility Functions बनाने के लिए।
- Static Configuration Access करने के लिए।
- Factory Methods विकसित करने के लिए।
- Class Level Validation करने के लिए।
- Global Information Manage करने के लिए।
Applications of this Pointer
this Pointer का उपयोग वर्तमान Object को Refer करने, Method Chaining लागू करने तथा Data Members एवं Parameters के बीच अंतर स्पष्ट करने के लिए किया जाता है।
| Application | Description |
|---|---|
| Current Object Reference | वर्तमान Object का Address प्राप्त करना। |
| Name Conflict | Data Member एवं Parameter के समान नाम होने पर अंतर बताना। |
| Method Chaining | एक ही Object पर लगातार कई Functions Call करना। |
| Returning Current Object | Current Object Return करना। |
| Object Passing | Current Object को दूसरे Function में भेजना। |
Advantages of this Pointer
- Current Object को आसानी से Refer किया जा सकता है।
- Data Members एवं Parameters के समान नाम होने पर भ्रम नहीं होता।
- Method Chaining को सरल बनाता है।
- Readable एवं Maintainable Code लिखने में सहायता करता है।
- Object Oriented Programming को अधिक प्रभावी बनाता है।
- Current Object Return करने में उपयोगी है।
Limitations of Static Members and this Pointer
| Concept | Limitation |
|---|---|
| Static Data Member | केवल Common Data के लिए उपयुक्त होता है। |
| Static Member Function | Non-static Data Members को सीधे Access नहीं कर सकता। |
| this Pointer | केवल Non-static Member Functions में उपलब्ध होता है। |
| Static Function | this Pointer उपलब्ध नहीं होता। |
Real Life Example
मान लीजिए किसी College Management System में सभी Students के लिए College Name समान है। इसे Static Data Member में Store किया जा सकता है। कुल Students की संख्या Static Member Function द्वारा Display की जा सकती है। वहीं प्रत्येक Student Object के Name, Roll Number तथा Branch को Update करते समय this Pointer वर्तमान Object के Data Members को Refer करने के लिए उपयोग किया जाता है।
Summary
Static Data Member, Static Member Function तथा this Pointer C++ Object Oriented Programming के महत्वपूर्ण Features हैं। Static Members पूरी Class के लिए Common होते हैं जबकि this Pointer वर्तमान Object (Current Object) को Refer करता है। इन Concepts की सहायता से Memory Management, Code Reusability तथा Object Handling अधिक प्रभावी बनती है।
| Concept | Description |
|---|---|
| Static Data Member | पूरी Class के सभी Objects द्वारा Shared Data Member। |
| Static Member Function | Object बनाए बिना Call किया जाने वाला Member Function। |
| Static Keyword | Class Level Memory एवं Shared Data को Manage करने के लिए उपयोग किया जाता है। |
| this Pointer | Current Object का Address Store करने वाला Special Pointer। |
| Memory Allocation | Static Members के लिए केवल एक बार Memory Allocate होती है। |
| Method Chaining | this Pointer द्वारा Current Object Return किया जा सकता है। |
| Class Access | Static Members को Class Name द्वारा Access किया जा सकता है। |
Important Viva Questions
- Static Data Member क्या है?
- Static Data Member की मुख्य विशेषताएँ लिखिए।
- Static Member Function क्या होता है?
- Static Member Function एवं Normal Member Function में क्या अंतर है?
- Static Member Function में this Pointer क्यों उपलब्ध नहीं होता?
- this Pointer क्या है?
- this Pointer का Data Type क्या होता है?
- this Pointer का उपयोग कब किया जाता है?
- Static Data Member को Class के बाहर Define क्यों किया जाता है?
- Static Members के Advantages क्या हैं?
University Examination Important Questions
- Static Data Member को उदाहरण सहित समझाइए।
- Static Member Function की परिभाषा तथा कार्यप्रणाली लिखिए।
- Static Data Member एवं Normal Data Member में अंतर लिखिए।
- Static Member Function एवं Normal Member Function में अंतर लिखिए।
- this Pointer क्या है? उदाहरण सहित समझाइए।
- this Pointer की आवश्यकता एवं Applications लिखिए।
- Static Keyword के उपयोग समझाइए।
- Memory Management में Static Members की भूमिका स्पष्ट कीजिए।
- Static Members के Advantages एवं Limitations लिखिए।
- Object Oriented Programming में this Pointer की भूमिका समझाइए।
Exam Tips
- हमेशा याद रखें कि Static Data Member की केवल एक Copy Memory में रहती है।
- Static Member Function को Object बनाए बिना ClassName::Function() द्वारा Call किया जा सकता है।
- Static Member Function केवल Static Members को सीधे Access करता है।
- this Pointer केवल Non-static Member Functions में उपलब्ध होता है।
- this Pointer वर्तमान Object का Address Store करता है।
- Static Data Member तथा Normal Data Member के कम से कम पाँच अंतर परीक्षा के लिए तैयार रखें।
- Static Member Function तथा Normal Member Function के Differences भी अवश्य याद रखें।
Conclusion
Static Data Member, Static Member Function तथा this Pointer C++ Object Oriented Programming के अत्यंत महत्वपूर्ण Concepts हैं। Static Members की सहायता से Class Level Data को Efficient तरीके से Manage किया जाता है, जबकि this Pointer वर्तमान Object को Refer करके Object Oriented Programming को अधिक प्रभावी बनाता है। Memory Optimization, Object Counting, Method Chaining, Shared Configuration तथा Enterprise Software Development में इन Concepts का व्यापक उपयोग किया जाता है। RGPV B.Tech First Year के विद्यार्थियों के लिए यह Topic Theory, Practical एवं Viva तीनों दृष्टिकोण से अत्यंत महत्वपूर्ण है।
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 →this Pointer in C++ Notes | this Keyword, Uses, Advantages & Examples | Basic Computer Engineering | RGPV BTech First Year
this Po...
Read More →