2011-09-17 10 views
5

क्या यह संकलक को इनलाइन करने की अनुमति देता है, यह जानकर कि केवल उसी वर्ग में कार्य ही इसका उपयोग कर सकते हैं? या यह केवल प्रोग्रामर की सुविधा के लिए है?क्या 'निजी' एक्सेस संशोधक संकलक को अनुकूलन के लिए अधिक जगह देता है?

+0

कोई सभ्य कंपाइलर एक गैर-आभासी विधि को रेखांकित करेगा जब यह समझ में आता है। पहुंच के साथ कुछ भी नहीं है क्योंकि यह विधि कार्यान्वयन को संशोधित नहीं करता है। –

+0

मैं पिछले सप्ताह एक ही प्रश्न पूछने जा रहा था। मैं किसी भी उदाहरण के बारे में नहीं सोच सकता था जहां संकलक अलग कोड उत्पन्न करेगा क्योंकि एक समारोह निजी है। कोई उदाहरण? – JohnPS

उत्तर

6

संकलक सुझाव के रूप में अनुकूलन (लेकिन करने के लिए आवश्यक नहीं है) कर सकते हैं, लेकिन यह बिंदु नहीं है। एक्सेस संशोधक का बिंदु संकलन समय पर प्रोग्रामिंग त्रुटियों के कुछ वर्गों (कोई इरादा नहीं है) पकड़ना है। निजी कार्य कार्य होते हैं, यदि किसी ने उन्हें कक्षा के बाहर से बुलाया है, तो यह बग होगा, और आप जितनी जल्दी हो सके इसके बारे में जानना चाहते हैं।

(जब भी आप सवाल पूछते हैं "क्या संकलक इस जानकारी के आधार पर अनुकूलन कर सकता है", जवाब "हां, जब तक कि मानक में कोई विशिष्ट नियम न हो जो कहता है कि इसकी अनुमति नहीं है" (जैसे कि volatile के नियम, जिनका पूरा उद्देश्य ऑप्टिमाइज़ेशन को बाधित करना है)। हालांकि, कंपाइलर्स को परेशान नहीं करते हैं, जानकारी के किसी भी टुकड़े के आधार पर ऑप्टिमाइज़ करना। आखिरकार, कंपाइलर्स को पहले स्थान पर कोई अनुकूलन करने की आवश्यकता नहीं है ! आपका कंपाइलर कितना चालाक है, आजकल, इस बात पर निर्भर करता है कि आप कितनी देर तक इसे चलाने के इच्छुक हैं; एमएसवीसी का पूरा कार्यक्रम पीजीओ मोड आभासी विधि प्रेषण के माध्यम से को रेखांकित करने में सक्षम है - यह सबसे संभावित लक्ष्य अनुमान लगाता है, और वापस गिरता है नियमित रूप से अगर अनुमान गलत था तो रनटाइम पर वर्चुअल कॉल - लेकिन कम से कम दो कारकों द्वारा संकलित धीमा हो जाता है।)

+0

बस यह जोड़ने के लिए कि एक विधि इनलाइन बनाने का एकमात्र अच्छा कारण यह है कि यह काफी छोटा है। इसका कहां से कहने के लिए कुछ भी नहीं है। –

+0

शानदार उत्तर: डी – slartibartfast

+0

क्या आप एक उदाहरण दे सकते हैं कि संकलक इस तथ्य का उपयोग कैसे कर सकता है कि एक फ़ंक्शन अलग-अलग कोड उत्पन्न करने के लिए निजी है, किसी भी तरह से अनुकूलित किया गया है? – JohnPS

4

एक्सेस विनिर्देशक Encapsulation और Abstraction के ओओपी सिद्धांतों को लागू करने के लिए सी ++ तंत्र का एक हिस्सा हैं और संकलक के लिए अनुकूलन नहीं है।

कुछ बुद्धिमान संकलक संभवतः इसके माध्यम से कुछ अनुकूलन को कार्यान्वित कर सकते हैं लेकिन यह C++ मानक द्वारा ऐसा करने के लिए लागू नहीं है। एक्सेस विनिर्देशों का उद्देश्य अनुकूलन नहीं है बल्कि सी ++ भाषा द्वारा समर्थित सिद्धांतों के लिए भाषा संरचनाओं को सुविधाजनक बनाने के लिए है।