उन कंपाइलर कार्यान्वयन के लिए जो vtables का उपयोग करते हैं: क्या ऐसे कोई मामले हैं जब वर्चुअल फ़ंक्शन टेबल रन टाइम पर बदल जाते हैं? या vtables केवल संकलन समय पर भरे हुए हैं, और रन टाइम पर उन्हें संशोधित करने के लिए कोई कार्रवाई नहीं की जाती है?रनटाइम पर Vtable संशोधनों
उत्तर
मुझे किसी भी सी ++ एबीआई के बारे में पता नहीं है जो पॉलिमॉर्फिज्म कार्यान्वयन के साथ है जो रनटाइम पर वर्चुअल टेबल बदलता है।
यह बहुत उपयोगी नहीं होगा, वैसे भी, क्योंकि वर्चुअल टेबल आमतौर पर कोड की संपत्ति का वर्णन करते हैं (वर्ग पदानुक्रम में एक दूसरे के w.r.t. स्थिति के सदस्य कार्य का संबंध) और सी ++ कोड रनटाइम पर नहीं बदलता है।
और क्योंकि यह उपयोगी नहीं होगा, यह अपमानजनक होगा।
vtables execurable छवि में कोड अनुभाग या डेटा अनुभाग पर जाना है? –
@KarolisM ilieška: किस कार्यान्वयन के तहत? और आपको क्यों जानने की ज़रूरत है? –
विशिष्ट होने के लिए: एआरएम कील, लेकिन यह जीसीसी हाथ के लिए भी लागू होता है। 1. मैं सिर्फ उत्सुक हूं, 2. मैं एम्बेडेड सिस्टम के साथ काम करता हूं और कभी-कभी यह जानने के लिए पर्याप्त होता है कि कुछ वर्ग कहां रखना है। –
संक्षिप्त उत्तर नहीं है।
एक थोड़ा लंबा (और शायद कार्यान्वयन विशिष्ट) जवाब यह है कि एक निर्माता और एक व्युत्पन्न बहुरूपी वर्ग के नाशक के निष्पादन के दौरान वास्तविक vtable परिवर्तन करने के लिए वस्तु की सूचक है, ताकि एक व्युत्पन्न वर्ग में ओवरराइड तरीकों निष्पादित नहीं मिलता है बेस क्लास के कन्स्ट्रक्टर/विनाशक द्वारा, व्युत्पन्न कक्षा अभी तक निर्मित नहीं हुई है/इसे नष्ट कर दिया गया है।
उद्देश्य-सी (++)
हाथ से कोड अपने खुद के प्रेषण तंत्र
:
पायथन/जावास्क्रिप्ट आदि अल।
(सबसे अच्छा विकल्प) आपके डिजाइन पर पुनर्विचार करें।
आप वस्तुओं रन टाइम के दौरान वर्ग बदलना चाहते हैं तो आप विकल्पों में से एक संख्या है
यह vtable नहीं है जो बदलता है। यह विनाश के तहत वस्तु का vptr सदस्य है! –
भी, 'std :: function' को रनटाइम पर फिर से असाइन किया जा सकता है, इसलिए यह एक और विकल्प –
@KerrekSB तय है, हालांकि मुझे यकीन है कि बेहतर शब्द –
- 1. Vtable
- 2. इंटरफ़ेस vtable
- 3. सी ++ vtable
- 4. संशोधनों पर एंड्रॉइड दृश्य कैसे अपडेट करें?
- 5. रनटाइम
- 6. सी ++ विरासत/VTable प्रश्न
- 7. यूनिट परीक्षण फ़ाइल संशोधनों
- 8. स्टैकेबल संशोधनों क्या हैं?
- 9. पुनर्लेखन स्ट्रिंग संशोधनों अधिक कार्यात्मक
- 10. QObject: गायब vtable लिंक त्रुटि
- 11. jQuery यूआई स्वत: पूर्ण: संशोधनों
- 12. रनटाइम पर Tframes बनाएं:
- 13. रनटाइम पर लोकेल बदलें?
- 14. रनटाइम पर कोड अनुबंध
- 15. रनटाइम पर NoClassDefFoundError
- 16. रनटाइम पर __setattr__ ओवरराइडिंग
- 17. रनटाइम पर अभिविन्यास बदलें
- 18. रनटाइम पर विस्तार कक्षा
- 19. रनटाइम पर हाइबरनेट कॉन्फ़िगरेशन
- 20. रनटाइम पर बीन बदलें
- 21. रनटाइम पर गुण जोड़ें
- 22. रनटाइम पर कॉल विधि
- 23. बफर संशोधनों को हाइलाइट करें
- 24. रनटाइम पर log4j गुण बदलें
- 25. रनटाइम पर enum मान बदलें?
- 26. रनटाइम पर हाइबरनेट डेटाबेस पासवर्ड
- 27. सी: रनटाइम पर कंपाइलर जानकारी
- 28. रनटाइम पर सी # कक्षाएं बनाना
- 29. रनटाइम पर नेटलोगो Chooser पॉप्युलेट
- 30. जावा: रनटाइम पर कक्षा बढ़ाना
आप किस तरह के रनटाइम संशोधनों को उपयोगी/संभव होने पर विचार करते हैं? –
@ चीयर्संधथ.-अल्फ अगर यह एक सादा सी ++ प्रोग्राम है, तो यह मूर्खतापूर्ण है। लेकिन अगर वह (अब या भविष्य में) को वीएम या इंटरपरेटर/जेआईटी कंपाइलर की तरह कुछ लिखना होगा, तो मैं अपने प्रश्न को इतनी जल्दी नहीं छोड़ूंगा –
यह आईपी है ... ऐसे डिजाइन के साथ आने में बहुत मुश्किल है थ्रेड-सुरक्षित, तो यह नहीं किया गया है। –