c++ - Definition of class member -
हम इस तरह एक क्लास सदस्य घोषित कर सकते हैं:
class test {public: int a ; } यह हम कैसे घोषित करते हैं, लेकिन मैं जानना चाहता हूं कि चर a कहां परिभाषित है। मैं स्थिर वर्ग जानता हूं सदस्य, यह स्थैतिक चर है, इसलिए इसे कक्षा में परिभाषित नहीं किया जा सकता है, इसे कक्षा के बाहर परिभाषित किया जाना चाहिए। इसलिए मुझे लगता है कि सामान्य वर्ग के सदस्य को परिभाषित करने के लिए एक स्थान होना चाहिए, मुझे लगता है कि यह कन्स्ट्रक्टर है जहां सामान्य सदस्य को निहित तरीके से परिभाषित किया गया है। क्या यह सही है?
गैर-स्थिर डेटा सदस्यों के लिए, घोषणा और परिभाषा एक और समान हैं।
इसलिए मुझे लगता है कि सामान्य वर्ग के सदस्य को परिभाषित करने के लिए एक स्थान होना चाहिए, मुझे लगता है कि यह कन्स्ट्रक्टर है जहां सामान्य सदस्य को निहित परिभाषित किया गया है।
I लगता है कि मैं देख सकता हूँ कि आप कहां से आ रहे हैं प्रत्येक स्थिर डेटा सदस्यों के लिए, केवल एक चर आवृत्ति प्रति प्रकार (टेम्पलेट्स के लिए - प्रत्येक टेम्पलेट इंस्टाशन एक विशिष्ट प्रकार बनाता है) - और यही कारण है कि घोषणा सामान्य चर के लिए एक अलग घोषणा की तरह अधिक है - यह कह रहा है "यह चर एक होगा कहीं पता - लिंकर को बाद में पते पर सिलाई करने के लिए कहें "। परिभाषा वह प्रोग्राम है जहां कार्यक्रम संकलक को उस विशिष्ट अनुवाद इकाई के ऑब्जेक्ट में चर के लिए वास्तविक मेमोरी आरक्षित करने को कहता है, जो कि लिंकर द्वारा पाया जाएगा और अन्य अनुवाद इकाइयों में कोड के लिए सुलभ होगा जिसे पता था और घोषणा के आधार पर वेरिएबल का उपयोग करें। (यह टेम्प्लेट के लिए थोड़ा अधिक जटिल है)। इसलिए, ढीले बोलने और प्रोग्रामर के परिप्रेक्ष्य से, स्थैतिक डाटा सदस्य की परिभाषा स्मृति के आवंटन को ट्रिगर करने वाले स्रोत कोड की रेखा दिखाई देती है और रचनाकार को चलाने के लिए व्यवस्था करती है। एक बार जब आप परिभाषा, आवंटन और निर्माण लिखते हैं तो सभी हल किए जाते हैं। गैर-स्थिर डेटा सदस्यों के लिए यह काफी भिन्न है - जब क्लास परिभाषा को संकलक द्वारा पार्स किया जाता है, तब भी उन गैर के लिए कोई वास्तविक अनुरोध नहीं है -स्थिक डेटा सदस्यों को कहीं भी किसी भी मेमोरी को देने के लिए, क्योंकि वहां अभी तक उस क्लास प्रकार का एक इंस्टेंस ऑब्जेक्ट नहीं है तभी जब कोई अन्य कोड ऑब्जेक्ट इंस्टेंस की आवश्यकता को इंगित करता है, तो संकलक को मेमोरी (यदि प्लेसमेंट new का उपयोग नहीं करते हैं) और निर्माण की व्यवस्था करने की आवश्यकता होगी। एक और तरीका रखो, गैर-स्टैटिक डाटा-सदस्यों की परिभाषा और आवंटन / निर्माण को आम तौर पर अलग-अलग स्रोत कोड के साथ-साथ डिकॉप्ड किया जाता है। यह सभी पुनरावर्ती रूप से लागू होता है: जब कोई ऑब्जेक्ट इंस्टॉलेशन स्वयं स्थैतिक या फाइल / नेमस्पेस क्षेत्र , स्मृति और निर्माण (कक्षा के अंदर के डेटा सदस्यों सहित) की व्यवस्था की जाएगी (जरूरी नहीं कि जरूरी) जब परिभाषा देखी जाती है, जैसा कि ऊपर है लेकिन बहुत बार ऑब्जेक्ट्स ऑब्जेक्ट्स स्टैक या ढेर पर हैं किसी भी तरह से डेटा सदस्यों के लिए आवंटन और निर्माण कोड उस वस्तु द्वारा संचालित होता है जिसकी वस्तु को बनाए रखा जाता है, और डेटा सदस्य की परिभाषा से कोई संबंध नहीं है।
Comments
Post a Comment