2010-03-30 15 views
14

मैं एक सदस्य समारोहस्टेटिक कार्यों बनाम स्थिरांक कार्यों

int funct(int x) const; 

पर देख रहा हूँ और अगर

static int funct(int x); 

बेहतर होगा मैं सोच रहा हूँ।

यदि कोई सदस्य फ़ंक्शन किसी भी सदस्य चर का उपयोग नहीं करता है तो यह स्थिर होना चाहिए। क्या ऐसी कोई चीज है जो इसे हतोत्साहित करेगी?

+0

मेरा एक वार्ता ने सुझाव दिया कि कॉन्स रास्ता पॉलिमॉर्फिज्म की अनुमति देता है। यह दिलचस्प है। विचार? – baash05

+0

यह एक समुदाय विकी क्यों है? – Uri

+0

क्योंकि वास्तव में कोई जवाब नहीं है। (मेरे साथी द्वारा प्रस्तावित एक से परे) और मुझे प्रश्नों को रेट करना पसंद नहीं है। अतीत में एक तकनीकी | विशिष्ट | उत्तरदायी प्रश्नों ने मुझे अंक खो दिया है। मैं अपने व्यक्तिगत बिंदुओं के बारे में कोई झटका नहीं देता, लेकिन मुझे व्यक्तिगत रूप से अवैध महसूस हुआ। यदि मैं टी | एस | ए पूछता हूं, तो मैं हार जाता हूं। अगर मैं पूछता हूं कि "आपका क्या है ...", मुझे लाभ होता है। मेरी समझ है कि समुदाय विकी अकेले मेरे अंक छोड़ देता है। – baash05

उत्तर

18

मान लीजिए कि यह सी ++ है, कॉन्स के रूप में घोषित एक फ़ंक्शन इंगित करता है कि यह उस उदाहरण पर डेटा सदस्यों को बदलने का इरादा नहीं रखता है, जिस पर यह कहा जाता है, यानी यह सूचक। चूंकि इस से बचने के तरीके हैं, यह गारंटी नहीं है, केवल एक घोषणा है।

एक स्थिर फ़ंक्शन एक विशिष्ट उदाहरण पर काम नहीं करता है और इस प्रकार "यह" पॉइंटर नहीं लेता है। इस प्रकार, यह एक बहुत ही बेवकूफ तरीके से "const" है।

यदि आपकी विधि को किसी विशिष्ट उदाहरण से बंधने की आवश्यकता नहीं है, तो इसे स्थिर बनाने के लिए यह समझ में आता है।

हालांकि, अगर आपके विधि बहुरूपी है - जो है, आप एक अलग वस्तु जिस पर यह शुरू हो जाती है के कहने के आधार पर कार्यान्वयन प्रदान करते हैं तो यह स्थिर, हो सकता है, क्योंकि यह एक विशिष्ट उदाहरण पर निर्भर करता है।

+0

हाँ। मैंने अपने सहकर्मियों से बात की और हम एक ही विचार में आए। धन्यवाद। – baash05

6

यदि कोई सदस्य फ़ंक्शन किसी भी सदस्य चर का उपयोग नहीं करता है तो अक्सर प्रश्न पूछने के लायक है:
"क्या इसे पहले स्थान पर सदस्य कार्य करने की आवश्यकता है?"

संबंधित मुद्दे