यहाँ हम देखेंगे कि C++ में प्राइवेट स्टेटिक मेंबर वेरिएबल्स को कैसे इनिशियलाइज़ किया जाता है। हम C++ क्लासेस में स्टेटिक मेंबर्स (फंक्शन्स या वेरिएबल्स) रख सकते हैं। स्टेटिक वेरिएबल्स के लिए, हमें क्लास को परिभाषित करने के बाद उन्हें इनिशियलाइज़ करना होता है।
इनिशियलाइज़ करने के लिए हमें क्लास नाम, फिर स्कोप रिज़ॉल्यूशन ऑपरेटर (::), फिर वेरिएबल नाम का उपयोग करना होता है। अब हम कुछ मान असाइन कर सकते हैं।
निम्नलिखित कोड स्टेटिक मेंबर इनिशियलाइज़ेशन तकनीक को दर्शाता है।
उदाहरण
#include <iostream>
using namespace std;
class MyClass {
private:
static int st_var;
public:
MyClass() {
st_var++; // नया ऑब्जेक्ट बनने पर st_var बढ़ाएं
}
static int getStaticVar() {
return st_var;
}
};
// क्लास के बाहर स्टेटिक वेरिएबल को परिभाषित और इनिशियलाइज़ करें
int MyClass::st_var = 0;
int main() {
MyClass ob1, ob2, ob3; // तीन ऑब्जेक्ट्स बनाए गए
cout << "Number of objects: " << MyClass::getStaticVar();
return 0;
}
आउटपुट
Number of objects: 3
मुख्य बिंदु
- घोषणा क्लास के अंदर:
static int st_var;(केवल घोषणा, परिभाषा नहीं)। - परिभाषा क्लास के बाहर:
int MyClass::st_var = 0;(मेमोरी आवंटित होती है यहाँ)। - यह ग्लोबल स्कोप में होनी चाहिए, किसी फंक्शन के अंदर नहीं।
const staticइंटीग्रल टाइप्स को क्लास के अंदर इनिशियलाइज़ किया जा सकता है (C++11 से)।- C++17 से
inline staticवेरिएबल्स को क्लास के अंदर ही परिभाषित किया जा सकता है।
C++17 इंलाइन स्टेटिक उदाहरण
class MyClass {
public:
inline static int st_var = 0; // C++17: क्लास के अंदर परिभाषा
MyClass() { st_var++; }
static int getCount() { return st_var; }
};