द्वारा अभिन्न प्रकारों को पारित करने के क्या फायदे हैं प्रश्न: क्या केवल मूल्य के विपरीत कॉन्स्ट संदर्भ द्वारा एक अभिन्न प्रकार को पारित करने का लाभ है।कॉन्स रेफ
यानी।
void foo(const int& n); // case #1
बनाम
void foo(int n); // case #2
जवाब उपयोगकर्ता परिभाषित प्रकार के लिए स्पष्ट है, मामले # 1 अनावश्यक नकल से बचा जाता है, जबकि वस्तु की constness सुनिश्चित। हालांकि उपर्युक्त मामले में, संदर्भ और पूर्णांक (कम से कम मेरे सिस्टम पर) एक ही आकार के हैं, इसलिए मैं कल्पना नहीं कर सकता कि फ़ंक्शन कॉल के लिए कितना समय लगता है (इस कारण के कारण) नकल)। हालांकि, मेरा प्रश्न वास्तव में फ़ंक्शन को रेखांकित करने वाले कंपाइलर से संबंधित है:
बहुत छोटे इनलाइन फ़ंक्शंस के लिए, क्या कंपाइलर को # 2 के मामले में पूर्णांक की एक प्रति बनाना होगा? कंपाइलर को यह बताकर हम संदर्भ को नहीं बदल पाएंगे, यह पूर्णांक की अनावश्यक प्रतिलिपि के बिना फ़ंक्शन कॉल को रेखांकित कर सकता है?
कोई सलाह स्वागत है।
+1 परीक्षण के लिए धन्यवाद। – DeusAduro
मुझे आश्चर्य है कि क्या वे एक ही असेंबली आउटपुट होंगे यदि बार() दूसरी फाइल में था? शायद ऩही। – asveikau
@asveikau: यदि फ़ंक्शन इनलाइन है, तो कोई अन्य तरीका नहीं है() किसी अन्य संकलन इकाई में हो सकता है। इनलाइन फ़ंक्शंस को हेडर फ़ाइल में परिभाषित किया जाना चाहिए, और सभी संकलन इकाइयों में उस शीर्षलेख को शामिल किया जाएगा, इस प्रकार संपूर्ण परिभाषा समेत। कीवर्ड 'इनलाइन' है और यह पूरे अंतर को बनाता है क्योंकि सभी कॉल साइटों पर कंपाइलर फ़ंक्शन के सटीक आंतरिक जानता है। –