static c
उदाहरण के साथ C ++ में स्टेटिक का महत्व और उपयोग।
भंडारण कक्षाओं पर हमारे पिछले विषयों में, हमें स्थिर शब्द से परिचित कराया गया था। हमने स्थैतिक चर के बारे में सीखा जो C ++ प्रोग्राम में घोषित किए गए हैं। हम जानते हैं कि स्टैटिक वैरिएबल को केवल एक बार इनिशियलाइज़ किया जाता है और वे पूरे प्रोग्राम में वैल्यू बरकरार रखते हैं।
स्थैतिक चर के समान, इस ट्यूटोरियल में, हम एक स्थैतिक खोजशब्द के उपयोग का विस्तार करेंगे:
- एक कक्षा में स्थिर सदस्य चर
- स्थैतिक वर्ग की वस्तुएं
- स्थैतिक तरीके वर्ग
=> यहाँ गहराई सी ++ प्रशिक्षण ट्यूटोरियल की जाँच करें।
आप क्या सीखेंगे:
- एक कक्षा में स्थैतिक सदस्य चर
- स्टेटिक क्लास ऑब्जेक्ट्स
- एक कक्षा में स्थैतिक तरीके
- स्टेटिक फ़ंक्शंस का उद्देश्य
- निष्कर्ष
- अनुशंसित पाठ
एक कक्षा में स्थैतिक सदस्य चर
स्टैटिक पर स्टैटिक वैरिएबल कभी आवंटित नहीं होता है। उन्हें अलग-अलग स्थैतिक भंडारण पर जगह आवंटित की जाती है। इसका मतलब यह है कि जब हम एक वर्ग में एक स्थिर चर घोषित करते हैं, तो यह चर उस वर्ग के सभी ऑब्जेक्ट द्वारा साझा किया जाता है।
चूंकि स्टैटिक वैरिएबल्स को केवल एक बार इनिशियलाइज़ किया जाता है और एक क्लास के सभी ऑब्जेक्ट्स द्वारा साझा किया जाता है, स्टैटिक वैरिएबल्स को कभी भी कंस्ट्रक्टर द्वारा इनिशियलाइज़ नहीं किया जाता है। इसके बजाय, स्टैटिक वैरिएबल को केवल क्लास के बाहर स्पष्ट रूप से एक बार शुरू किया जाना चाहिए, जो कि रिज़ॉल्यूशन रिज़ॉल्यूशन ऑपरेटर (: :) का उपयोग करता है।
जब पहली वस्तु बनाई जाती है, तो कोई अन्य इनिशियलाइज़ेशन मौजूद नहीं होने पर आदिम प्रकार के सभी स्थिर डेटा को शून्य से प्रारंभ किया जाता है।
निम्न उदाहरण की जाँच करें जो एक वर्ग में स्थिर चर प्रदर्शित करता है।
जैसा कि नीचे दिए गए कोड में दिखाया गया है, हमारे पास क्लास के नमूने के सदस्य के रूप में स्टैटिक वेरिएबल काउंट है। ध्यान दें कि हमने इस चर को प्रारंभिक मूल्य = 0 के साथ वर्ग के बाहर स्पष्ट रूप से आरंभीकृत किया है;
फिर हम कक्षा के कंस्ट्रक्टर में इस स्थिर चर को बढ़ाते हैं।
आइए एक उदाहरण कार्यक्रम देखें।
#include #include using namespace std; class sample{ int var; static int count; public: sample(int var):var(var){ cout<<'Count = '< आउटपुट:
गिनती = ०
गिनती = १
गिनती = २
मुख्य फ़ंक्शन में, हम तीन अलग-अलग ऑब्जेक्ट बनाते हैं। आउटपुट में, हम देखते हैं कि स्टैटिक वैरिएबल का मान ऑब्जेक्ट क्रिएशन के बीच बना रहता है और हर ऑब्जेक्ट क्रिएशन के साथ रीसेट नहीं होता है। यह पहली वस्तु के लिए, गिनती = 0. तब यह 1. के लिए बढ़ा है 1. अगली वस्तु के लिए गिनती = 1 और इतने पर।
यदि गणना किसी साधारण चर की होती, तो आउटपुट होता:
गिनती = ०
गिनती = ०
गिनती = ०
स्टेटिक क्लास ऑब्जेक्ट्स
कक्षा के स्थिर सदस्य चर की तरह, हम कक्षा की वस्तुओं को स्थैतिक घोषित कर सकते हैं। स्टेटिक क्लास ऑब्जेक्ट्स को भी केवल एक बार इनिशियलाइज़ किया जाता है और पूरे प्रोग्राम में एक्टिव रहते हैं। जैसा कि ऑब्जेक्ट एक उपयोगकर्ता-परिभाषित प्रकार है, एक स्थिर वर्ग ऑब्जेक्ट को एक कंस्ट्रक्टर का उपयोग करके सामान्य वस्तुओं के समान प्रारंभ किया जाता है।
स्टैटिक क्लास ऑब्जेक्ट को बेहतर ढंग से समझने के लिए एक प्रोग्रामिंग उदाहरण लेते हैं।
#include using namespace std; class xyz { int i; public: xyz() { i=0; cout << 'Constructor::xyz'<इस कार्यक्रम में, हमारे पास एक रचनाकार और एक विध्वंसक के साथ एक वर्ग xyz है। मुख्य कार्य में, हम एक चर x = 0 घोषित करते हैं; यदि x शून्य के बराबर है, तो हम कक्षा xyz का एक स्थिर ऑब्जेक्ट बनाते हैं।
कार्यक्रम निम्नलिखित आउटपुट देता है।
आउटपुट:
कंस्ट्रक्टर :: xyz
मुख्य अंत
विनाशक :: xyz
आम तौर पर आउटपुट होना चाहिए था
कंस्ट्रक्टर :: xyz
विनाशक :: xyz
मुख्य अंत
लेकिन जैसा कि हम एक स्थिर ऑब्जेक्ट बनाते हैं, इस ऑब्जेक्ट में प्रोग्राम के अंत तक एक स्कोप होता है न कि जब ऑब्जेक्ट स्कोप से बाहर जाता है (यदि स्टेटमेंट का अंत)। यही कारण है, जिसके लिए ऑब्जेक्ट obj के लिए विध्वंसक मुख्य फ़ंक्शन के अंत के बाद ही निष्पादित होता है।
एक कक्षा में स्थैतिक तरीके
हम एक कक्षा में स्थिर तरीके भी रख सकते हैं। स्थैतिक वस्तुओं और स्थिर सदस्य चर की तरह, स्थिर सदस्य कार्यों में भी गुंजाइश है जब तक कि कार्यक्रम निष्पादन समाप्त नहीं हो जाता।
जब किसी वर्ग पद्धति को स्थिर घोषित किया जाता है, तो वह केवल स्थैतिक सदस्यों यानी स्थिर चर और कक्षा के स्थिर कार्यों तक ही पहुँच बना सकती है। यह कक्षा के सामान्य सदस्यों तक नहीं पहुँच सकता है।
इंस्टाग्राम पोस्ट शेड्यूल करने के लिए एक ऐप है
इसके अलावा, वहाँ कोई 'यह' सूचक स्थिर वर्ग विधियों के लिए उपलब्ध है।
हमें किसी वर्ग के स्थिर तरीकों तक पहुंचने के लिए ऑब्जेक्ट और डॉट ऑपरेटर का उपयोग करने की अनुमति है, लेकिन इन तरीकों का उपयोग करने के लिए वर्ग नाम और गुंजाइश रिज़ॉल्यूशन ऑपरेटर का उपयोग करने की सिफारिश की गई है।
नीचे एक कक्षा में एक स्थिर विधि का उपयोग करने का एक उदाहरण है।
इस उदाहरण में, हमने दो स्थिर सदस्य चर A और B, और एक स्थैतिक विधि PrintValues को परिभाषित किया है। चर ए और बी को क्रमशः 10 और 20 के मान से आरंभ किया जाता है। स्थिर विधि प्रिंटवैल्यू में, ए और बी के मूल्य क्रमशः वृद्धि और पूर्व वेतन वृद्धि से गुजरते हैं। उसके बाद, मान मुद्रित किए जाते हैं।
मुख्य विधि में, हम सीधे क्लास नाम का उपयोग करके स्टैटिक विधि प्रिंटवैल्यू को कॉल करते हैं क्योंकि हमें स्टैटिक फ़ंक्शन को लागू करने के लिए किसी ऑब्जेक्ट की आवश्यकता नहीं होती है।
#include using namespace std; class Sample { static int A; static int B; public: static void printValues(){ A++; ++B; cout <<'Value of A: ' << A << endl; cout <<'Value of B: ' << B << endl; } }; int Sample :: A =10; int Sample :: B =20; int main(){ Sample::printValues(); return 0; }
आउटपुट:
A का मूल्य: 11
बी का मूल्य: 21
उसी आउटपुट का स्क्रीनशॉट नीचे दिया गया है।

इसलिए आउटपुट में, हम देखते हैं कि दोनों स्थिर वैरिएबल के मान उन पर किए गए संचालन के अनुसार बदल दिए गए हैं।
स्टेटिक फ़ंक्शंस का उद्देश्य
इस ट्यूटोरियल में कीवर्ड स्थिर के विभिन्न उपयोगों को देखने के बाद, एक सवाल यह है कि स्थिर कार्यों का उद्देश्य क्या है।
स्थैतिक कार्यों का उद्देश्य नीचे संक्षेप में प्रस्तुत किया जा सकता है:
- हम उस फ़ंक्शन का उपयोग करते हैं जब वह फ़ंक्शन इनवॉइसिंग और काम करने के लिए ऑब्जेक्ट पर निर्भर नहीं करता है।
- स्थिर कार्य का उपयोग करने का एक अन्य उद्देश्य इसके उपयोग को सीमित करना है। वैश्विक कार्यों के विपरीत, स्थिर कार्यों तक पहुंच उस फ़ाइल तक सीमित है जिसे वे अंदर रखा गया है। इस प्रकार फ़ंक्शन तक पहुंच को सीमित करने के लिए, हम इसे स्थिर बनाते हैं।
- उपरोक्त दो कारणों के अलावा, हम स्थैतिक कार्यों का उपयोग करते हैं जब हम किसी फ़ंक्शन का निष्पादन करने के लिए किसी वर्ग का ऑब्जेक्ट नहीं बनाना चाहते हैं जो कि किसी भी वर्ग के सदस्यों का संदर्भ नहीं दे रहा है।
निष्कर्ष
इस विषय को समाप्त करने के लिए, हम कह सकते हैं कि C ++ में स्थिर कीवर्ड का उपयोग विभिन्न तरीकों से चर, सदस्य चर, वर्ग ऑब्जेक्ट, विधि, आदि घोषित करने के लिए किया जा सकता है।
स्थैतिक सदस्य कार्यों और चर को ऑब्जेक्ट के साथ एक्सेस करने की आवश्यकता नहीं होती है, बल्कि उन्हें सीधे क्लास नाम का उपयोग करके एक्सेस किया जा सकता है। इसके अलावा, कार्यक्रम के निष्पादन के दौरान स्थिर संस्थाओं का दायरा बना रहता है। इसलिए स्थैतिक कीवर्ड का उपयोग किसी विशेष इकाई की पहुंच को नियंत्रित करने के लिए भी किया जा सकता है।
हमारे आगामी ट्यूटोरियल में, हम C ++ में कई अन्य OOP विषयों के बारे में अधिक जानेंगे।
=> सी ++ प्रशिक्षण ट्यूटोरियल के ए-जेड को देखने के लिए यहां देखें।
अनुशंसित पाठ
- मॉकिटो का उपयोग करके मॉकिंग प्राइवेट, स्टैटिक और शून्य तरीके
- स्थैतिक परीक्षण और गतिशील परीक्षण - इन दो महत्वपूर्ण परीक्षण तकनीकों के बीच अंतर
- शीर्ष 40 स्टेटिक कोड विश्लेषण उपकरण (सर्वश्रेष्ठ स्रोत कोड विश्लेषण उपकरण)
- सर्वश्रेष्ठ मुफ्त सी # ट्यूटोरियल श्रृंखला: शुरुआती के लिए अंतिम सी # गाइड
- लोडरुनर में स्टेटिक वैल्यूज़ का पैरामीटर
- अजगर चर
- C ++ में इनहेरिटेंस के प्रकार
- C ++ में चर