2011-10-05 9 views
5

जैसा कि मैं समझता हूं, कक्षा के प्रत्येक उदाहरण में स्मृति में अपना सदस्य चर होता है, ताकि यह विभिन्न वस्तुओं के लिए अलग-अलग मानों को संग्रहीत कर सके। हालांकि, यह सदस्य कार्यों के लिए समान नहीं है। सदस्य कार्यों को कक्षा के ऑब्जेक्ट्स में पुन: उपयोग किया जाता है, इसलिए सभी ऑब्जेक्ट्स द्वारा आवश्यक होने पर संदर्भित करने के लिए स्मृति के एक ब्लॉक के साथ केवल एक पता होता है।स्मृति में स्थिर विधि और गैर स्थैतिक फ़ंक्शन के बीच अंतर

स्थैतिक सदस्यों को स्थिर सदस्यों तक पहुंचने के लिए बनाया गया है। हालांकि, स्थिर कार्य भी अपने आवेदन के जीवनकाल के दौरान ही एक मौजूद है। स्थिर पहुंचने के अलावा, निम्न स्तर पर यह सामान्य वर्ग कार्यों के साथ अलग नहीं है, है ना? या शायद मैं गलत हूं, कि प्रत्येक वर्ग के अपने कार्य हैं?

उत्तर

2

यह भाषा से भाषा में भिन्न है, लेकिन सी या सी ++ 03 कार्यों में आमतौर पर असेंबली कार्यों पर नक्शा होता है; यह स्मृति में एक बार मौजूद है (चाहे नि: शुल्क फ़ंक्शंस, क्लास फ़ंक्शंस या क्लास स्टेटिक फ़ंक्शंस) और अंतर्निहित सदस्य फ़ंक्शंस के लिए this पॉइंटर सहित पैरामीटर के रूप में तर्क लें।

सी ++ 11 में, लैम्ब्डा फ़ंक्शन एक नवीनता पेश करते हैं: तथाकथित फ़ंक्शन के प्रत्येक उदाहरण में कुछ राज्य होगा। कार्यान्वयन बिंदु से, इसका अर्थ यह है कि "नियमित" फ़ंक्शन की आवश्यकता होती है और यह डेटा के अज्ञात बंडल से जुड़ा होता है (यदि आवश्यक हो)। जब भी लैम्ब्डा बनाया जाता है, तो फ़ंक्शन को डुप्लिकेट करने की आवश्यकता नहीं होती है, लेकिन डेटा करता है। एक उपयोगी आंकड़ा यह याद रखना है कि लैम्ब्डा (सी ++ में) फ़ंक्शन ऑब्जेक्ट्स (या ऑब्जेक्ट्स अनुमानित) को प्रतिस्थापित करते हैं: वे सिंटैक्टिक चीनी हैं, कार्यान्वयन समान है।

6

गैर स्थैतिक कार्य अतिरिक्त पैरामीटर स्वीकार करते हैं, this, जो आवृत्ति-विशिष्ट चर के साथ क्लास इंस्टेंस के सूचक हैं।

स्टेटिक फ़ंक्शंस में यह पैरामीटर नहीं है (इस प्रकार आप एक स्थिर फ़ंक्शन में this का उपयोग नहीं कर सकते हैं और केवल स्थिर डेटा सदस्यों तक पहुंच सकते हैं)।

0

स्थिर और सदस्य कार्यों के बीच एकमात्र अंतर यह है कि सदस्य कार्यों में हमेशा this पॉइंटर स्वचालित रूप से पास हो जाता है।

0

बस इसे संदर्भित किया गया है, स्थिर कार्य स्वयं के लिए स्मृति का एक सेट बनाता है और स्थिर डेटा-सदस्यों के लिए है जो आम तौर पर परिवर्तनीय नहीं होते हैं। लेकिन गैर स्थैतिक कार्य प्रत्येक उदाहरण के लिए यादों का अलग सेट बनाता है और दोनों गैर स्थैतिक और स्थैतिक डेटा-सदस्यों के लिए हैं। यदि आपको स्थिर आउटपुट की आवश्यकता स्थिर है और यदि आपको गैर स्थैतिक के लिए वैकल्पिक जाना आवश्यक है।

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

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