मान लें कि आपके पास कक्षा (सी ++) या मॉड्यूल (एकल सी फ़ाइल) है। फिर अपने कार्यों में से एक में आप एक चर की एक प्रति स्टोर करना चाहते हैं और अगली बार फ़ंक्शन कहलाए जाने तक अपना मान धारण करना चाहते हैं, क्या यह वैश्विक होना बेहतर है (सी ++ में निजी हो सकता है और सी में बाहर नहीं रखा जा सकता है यह मॉड्यूल स्कोप में) या एक स्थानीय स्थैतिक चर बनाते हैं?एक स्थिर चर बनाने के लिए क्या स्थानीय स्थिर चर या वैश्विक होना बेहतर है?
उदा .:
void some_func_that_does_not_do_anything_useful(int arbVal)
{
static int lastArbVal = 0;
if (arbVal > lastArbVal)
{
lastArbVal = arbVal;
}
}
कारण मैं एक स्थिर के रूप में संभव के रूप में सीमित इसके दायरे में रखने के लिए है, लेकिन कुछ बातें मैंने पढ़ा है तो आप इस के लिए वैश्विक का उपयोग करना चाहिए का सुझाव होगा, इसलिए अब मैं उलझन में हूँ।
सबसे अच्छा क्या है (यदि कोई है) ?, पेशेवर/विपक्ष?
यदि आप केवल उस फ़ंक्शन में इसका उपयोग करते हैं, और कहीं और नहीं, तो इसे 'स्थिर' बनाना शायद सबसे अच्छा समाधान है। यद्यपि आप बहु-थ्रेडिंग जैसे मामलों के बारे में सोचना चाहते हैं, क्योंकि स्थिर चर सभी धागे के बीच साझा किया जाएगा। –
encapsulation के हित में एक स्थानीय स्थैतिक सबसे अच्छा होगा। यह भी कई सी कार्यों का दृष्टिकोण है। 'स्ट्रोक' दिमाग में आता है। – Adam
'स्ट्रोक' मैन पेज से उद्धरण के लिए: "इन कार्यों का कभी भी उपयोग न करें"। चलिए इसका उपयोग उदाहरण के रूप में नहीं करते हैं :-) –