यदि आपका वास्तव में मतलब है कि ऑब्जेक्ट में संपत्ति है, तो इसके लिए कोई स्थान आवंटित नहीं किया गया है। गुणों को किसी अन्य प्रकार के पहुंच, या तो फ़ील्ड या फ़ंक्शन के लिए इंटरफेस सामान्यीकृत किया जाता है।
यदि संपत्ति ऑब्जेक्ट के किसी क्षेत्र द्वारा समर्थित है, तो as Mason explained, फ़ील्ड ऑब्जेक्ट के हिस्से के रूप में मौजूद है; सरणी की लंबाई सीधे ऑब्जेक्ट के कुल आकार को प्रभावित करती है (जैसा कि TObject.InstanceSize
विधि द्वारा दिया गया है)। क्षेत्र में स्मृति है; संपत्ति नहीं है।
यदि संपत्ति किसी फ़ंक्शन द्वारा समर्थित है, तो फ़ंक्शन का रिटर्न मान आम तौर पर कॉलर के ढेर पर आवंटित हो जाता है और "var" पैरामीटर के रूप में पास किया जाता है। समारोह इसे भरता है और कॉलर पर लौटता है। फिर, संपत्ति के लिए आवंटित कोई स्मृति नहीं है।
आपके पास एक वस्तु पर सौ गुण हो सकते हैं जो केवल चार बाइट लंबा है (जो ऑब्जेक्ट्स के लिए न्यूनतम आकार है)।
यदि आप वास्तव में फ़ील्ड का मतलब रखते हैं, तो इसे TObject.NewInstance
पर कॉल के दौरान ऑब्जेक्ट के हिस्से के रूप में आवंटित किया जाता है। उस विधि को बाहरी कन्स्ट्रक्टर के प्रस्तावना के हिस्से के रूप में जाना जाता है (जैसा कि विरासत रचनाकारों को किसी भी कॉल के विपरीत)।
स्रोत
2010-10-21 17:45:24
यह गलत है। जब ऑब्जेक्ट बनाया जाता है तो ऑब्जेक्ट के सभी * फ़ील्ड * आवंटित किए जाएंगे। यह किसी संपत्ति के लिए जरूरी नहीं है क्योंकि इसमें गेटटर और सेटर विधियां हो सकती हैं जिन्हें निर्माण समय पर आवंटित करने के लिए किसी भी स्मृति की आवश्यकता नहीं होती है। – dummzeuch