जब static कीवर्ड का उपयोग किया जाता है, तो वेरिएबल या डेटा मेंबर्स या फंक्शन्स को फिर से मॉडिफाई नहीं किया जा सकता। यह प्रोग्राम के जीवनकाल के लिए आवंटित होता है। स्टैटिक फंक्शन्स को क्लास नाम का उपयोग करके सीधे कॉल किया जा सकता है।
स्टैटिक वेरिएबल्स केवल एक बार इनिशियलाइज़ होते हैं। कंपाइलर वेरिएबल को प्रोग्राम के अंत तक बनाए रखता है। स्टैटिक वेरिएबल को फंक्शन के अंदर या बाहर परिभाषित किया जा सकता है। वे ब्लॉक के लिए लोकल होते हैं। स्टैटिक वेरिएबल का डिफ़ॉल्ट मान शून्य होता है। स्टैटिक वेरिएबल्स प्रोग्राम के निष्पादन तक जीवित रहते हैं।
C++ भाषा में static कीवर्ड का सिंटैक्स निम्नलिखिक है,
static datatype variable_name = value; // स्टैटिक वेरिएबल static return_type function_name { // स्टैटिक फंक्शन्स ... } यहां,
datatype − वेरिएबल का डेटा टाइप जैसे int, char, float आदि।
variable_name − यह उपयोगकर्ता द्वारा दिया गया वेरिएबल का नाम है।
value − वेरिएबल इनिशियलाइज़ करने के लिए कोई भी मान। डिफ़ॉल्ट रूप से, यह शून्य है।
return_type − फंक्शन का डेटा टाइप जो मान लौटाता है।
function_name − फंक्शन को कोई भी नाम।
static कीवर्ड का एक उदाहरण निम्नलिखिक है।
उदाहरण
#include <bits/stdc++.h> using namespace std; class Base { public : static int val; static int func(int a) { cout << "\nस्टैटिक मेंबर फंक्शन कॉल किया गया"; cout << "\na का मान: " << a; } }; int Base::val=28; int main() { Base b; Base::func(8); cout << "\nस्टैटिक वेरिएबल का मान: " << b.val; return 0; } आउटपुट
स्टैटिक मेंबर फंक्शन कॉल किया गया a का मान: 8 स्टैटिक वेरिएबल का मान: 28
उपरोक्त प्रोग्राम में, एक स्टैटिक वेरिएबल घोषित किया गया है। क्लास Base में एक स्टैटिक फंक्शन परिभाषित किया गया है जैसा कि नीचे दिखाया गया है −
public : static int val; static int func(int a) { cout << "\nस्टैटिक मेंबर फंक्शन कॉल किया गया"; cout << "\na का मान: " << a; } क्लास के बाद और main() से पहले, स्टैटिक वेरिएबल को निम्नानुसार इनिशियलाइज़ किया जाता है।
int Base::val=28;
main() फंक्शन में, Base क्लास का ऑब्जेक्ट बनाया जाता है और स्टैटिक वेरिएबल को कॉल किया जाता है। Base क्लास के ऑब्जेक्ट का उपयोग किए बिना स्टैटिक फंक्शन को भी कॉल किया जाता है।
Base b; Base::func(8); cout << "\nस्टैटिक वेरिएबल का मान: " << b.val;