C++ for Object-Oriented Programming Exams in Hindi
यहाँ C++ का एक विस्तृत, परीक्षा-उन्मुख (exam-oriented) डीप डाइव गाइड दिया गया है,
जो आपको कॉम्पिटिटिव एग्जाम्स और टेक्निकल इंटरव्यूज में Object-Oriented Programming (OOPs) के प्रश्नों को हल करने में मदद करेगा।
C++ और OOPs कॉन्सेप्ट्स: परीक्षा के लिए संपूर्ण गाइड
जब आप किसी सरकारी या टेक्निकल परीक्षा की तैयारी कर रहे होते हैं, तो C++ से जुड़े OOPs (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) के कोर कॉन्सेप्ट्स को गहराई से समझना बेहद जरूरी है। एग्जाम्स में अक्सर थ्योरी, सिंटैक्स और उनके आंतरिक काम करने के तरीके (internals) से घुमावदार सवाल पूछे जाते हैं।
1. OOPs के 4 मुख्य स्तंभ (Core Pillars)
C++ पूरी तरह से इन चार सिद्धांतों पर आधारित है:
डेटा एब्स्ट्रैक्शन और एनकैप्सुलेशन (Data Abstraction & Encapsulation)
अक्सर छात्र इन दोनों में भ्रमित (confuse) हो जाते हैं। परीक्षा के दृष्टिकोण से इनमें यह मुख्य अंतर है:
- Encapsulation (एन्कैप्सुलेशन): डेटा (variables) और फंक्शन्स को एक सिंगल यूनिट यानी Class के अंदर बांधना। यह बाहरी कोड से डेटा को सुरक्षित रखने के लिए एक कवच की तरह काम करता है।
- Abstraction (एब्स्ट्रैक्शन): बैकग्राउंड की जटिलताओं या कूट (implementation details) को छुपाकर केवल जरूरी फीचर्स को यूजर के सामने प्रदर्शित करना।
इनहेरिटेंस (Inheritance)
इसके द्वारा एक नई क्लास (Derived/Child Class) पुरानी क्लास (Base/Parent Class) के फीचर्स और व्यवहार को अपना लेती है। C++ में मुख्य रूप से 5 प्रकार के इनहेरिटेंस होते हैं:
| इनहेरिटेंस का प्रकार | विवरण (Description) |
| Single | एक चाइल्ड क्लास केवल एक पैरेंट क्लास से इनहेरिट होती है। |
| Multiple | एक चाइल्ड क्लास एक से अधिक पैरेंट क्लासेस से इनहेरिट होती है (जैसे: class C : public A, public B)। |
| Multilevel | एक क्लास दूसरी डिराइव्ड क्लास से इनहेरिट होती है (A $\rightarrow$ B $\rightarrow$ C)। |
| Hierarchical | एक ही पैरेंट क्लास से कई सारी चाइल्ड क्लासेस बनती हैं। |
| Hybrid | ऊपर दिए गए दो या दो से अधिक इनहेरिटेंस का मिश्रण। |
⚠️ परीक्षा का मुख्य जाल: डायमंड प्रॉब्लम (The Diamond Problem)
जब क्लास B और C दोनों क्लास A से इनहेरिट होती हैं, और क्लास D इन दोनों B और C से इनहेरिट होती है, तो D के पास A की दो कॉपियां पहुँच जाती हैं। इससे कंपाइलर भ्रमित हो जाता है कि कौन सा मेंबर कॉल करें।
- समाधान: इनहेरिटेंस के समय virtual कीवर्ड का उपयोग करें: class B : virtual public A.
पॉलीमोर्फिज्म (Polymorphism)
पॉलीमोर्फिज्म का अर्थ है "एक नाम, अनेक रूप"। परीक्षा में इसके प्रकारों पर बहुत सवाल आते हैं:
- Compile-time (Early Binding / Static):Function Overloading: एक ही नाम के कई फंक्शन्स बनाना, लेकिन उनके पैरामीटर्स (signatures) अलग होने चाहिए।Operator Overloading: किसी मौजूदा C++ ऑपरेटर (जैसे +, -) को यूजर-डिफाइंड डेटा टाइप्स (Objects) के लिए विशेष काम सौंपना।
- Function Overloading: एक ही नाम के कई फंक्शन्स बनाना, लेकिन उनके पैरामीटर्स (signatures) अलग होने चाहिए।
- Operator Overloading: किसी मौजूदा C++ ऑपरेटर (जैसे +, -) को यूजर-डिफाइंड डेटा टाइप्स (Objects) के लिए विशेष काम सौंपना।
- Runtime (Late Binding / Dynamic):इसे Function Overriding (पैरेंट क्लास के फंक्शन को चाइल्ड क्लास में दोबारा नए तरीके से लिखना) और virtual फंक्शन्स के कॉम्बिनेशन से हासिल किया जाता है।
- इसे Function Overriding (पैरेंट क्लास के फंक्शन को चाइल्ड क्लास में दोबारा नए तरीके से लिखना) और virtual फंक्शन्स के कॉम्बिनेशन से हासिल किया जाता है।
2. महत्वपूर्ण C++ कॉन्सेप्ट्स (अक्सर पूछे जाने वाले विषय)
एक्सेस स्पेसिफायर्स (Access Specifiers)
C++ में डेटा सिक्योरिटी के लिए तीन लेयर्स होती हैं:
- private: ये मेंबर्स केवल उसी क्लास के अंदर एक्सेस किए जा सकते हैं। (क्लास के लिए यह डिफ़ॉल्ट होता है)।
- protected: ये मेंबर्स उसी क्लास में और उससे इनहेरिट हुई चाइल्ड क्लासेस में एक्सेस किए जा सकते हैं।
- public: इन्हें क्लास के बाहर कहीं से भी आसानी से एक्सेस किया जा सकता है।
कंस्ट्रक्टर और डिस्ट्रक्टर (Constructors and Destructors)
- Constructor: यह एक स्पेशल मेंबर फंक्शन है जो ऑब्जेक्ट क्रिएट होते ही अपने आप कॉल हो जाता है। इसका नाम क्लास के नाम जैसा ही होता है और इसका कोई रिटर्न टाइप नहीं होता।प्रकार: Default, Parameterized, और Copy Constructor (यह एक ऑब्जेक्ट की वैल्यू का उपयोग करके दूसरे ऑब्जेक्ट को इनिशियलाइज करता है। इसमें पैरामीटर हमेशा reference द्वारा पास किया जाता है: ClassName(const ClassName &obj)).
- प्रकार: Default, Parameterized, और Copy Constructor (यह एक ऑब्जेक्ट की वैल्यू का उपयोग करके दूसरे ऑब्जेक्ट को इनिशियलाइज करता है। इसमें पैरामीटर हमेशा reference द्वारा पास किया जाता है: ClassName(const ClassName &obj)).
- Destructor: जब ऑब्जेक्ट का स्कोप (scope) खत्म होता है, तो यह मेमोरी खाली करने के लिए अपने आप कॉल होता है। इसके नाम के आगे टिल्ड (~) सिंबल लगा होता है (जैसे: ~ClassName())। इसे ओवरलोड नहीं किया जा सकता।
एब्सट्रैक्ट क्लास और प्योर वर्चुअल फंक्शन
- Pure Virtual Function: ऐसा फंक्शन जिसका बेस क्लास में कोई इंप्लीमेंटेशन नहीं होता, इसे = 0 लिखकर डिक्लेअर करते हैं:C++virtual void display() = 0;
- Abstract Class: जिस क्लास में कम से कम एक Pure Virtual Function हो, उसे एब्सट्रैक्ट क्लास कहते हैं। परीक्षा में याद रखें: आप एब्सट्रैक्ट क्लास का ऑब्जेक्ट (Object) नहीं बना सकते।
3. मेमोरी मैनेजमेंट (Memory Management)
C++ आपको सीधे मेमोरी कंट्रोल करने की सुविधा देता है, जो इसे बेहद फ़ास्ट बनाता है।
this पॉइंटर
C++ में हर ऑब्जेक्ट के पास अपने खुद के एड्रेस (address) को एक्सेस करने के लिए एक छिपा हुआ पॉइंटर होता है, जिसे this pointer कहते हैं। यह सभी नॉन-स्टेटिक मेंबर फंक्शन्स में इम्प्लिसिट (implicit) रूप से पास होता है।
डायनेमिक मेमोरी एलोकेशन (new और delete)
- new ऑपरेटर: रनटाइम पर हीप (Heap) मेमोरी से स्पेस एलोकेट करने के लिए।
- delete ऑपरेटर: एलोकेट की गई हीप मेमोरी को वापस फ्री (Deallocate) करने के लिए ताकि Memory Leak न हो।
C++int* ptr = newint; // सिंगल इंटीजर के लिए मेमोरीint* arr = newint[20]; // 20 इंटीजर्स के एरे के लिए मेमोरीdelete ptr; // सिंगल एलिमेंट को डिलीट करने के लिएdelete[] arr; // पूरे एरे को डिलीट करने के लिए स्क्वायर ब्रैकेट [] जरूरी है
💡 क्विक एग्जाम टिप्स (Quick Exam Tips)
- Struct vs Class: struct में सभी मेंबर्स डिफ़ॉल्ट रूप से public होते हैं, जबकि class में डिफ़ॉल्ट रूप से private होते हैं।
- Friend Function: यह क्लास का मेंबर नहीं होता, फिर भी क्लास के private डेटा को एक्सेस कर सकता है। यह एनकैप्सुलेशन के नियम को तोड़ता है, लेकिन ऑपरेटर ओवरलोडिंग में बहुत काम आता है।
- Static Members: static वेरिएबल्स की केवल एक ही कॉपी बनती है जो क्लास के सभी ऑब्जेक्ट्स के बीच शेयर होती है। इन्हें क्लास के बाहर इनिशियलाइज करना अनिवार्य है।
यदि आप अपनी तैयारी को और मजबूत करना चाहते हैं और अपनी स्पीड व एक्यूरेसी जांचना चाहते हैं, तो आप Preptm की क्विज़ लिस्ट पर जाकर C++ और Object Oriented Programming (OOPs) के मॉक टेस्ट हल कर सकते हैं।

टिप्पणियाँ0
अभी कोई टिप्पणी नहीं। अपने विचार साझा करने वाले पहले व्यक्ति बनें।