एक परियोजना मैं बनाए रखने में, मैं साधारण get
/set
तरीकोंआदिम प्रकारों को पारित करने के संदर्भ का क्या उपयोग है?
const int & MyClass::getFoo() { return m_foo; }
void MyClass::setFoo(const int & foo) { m_foo = foo; }
कर रही बजाय निम्नलिखित में बात क्या है के लिए इस तरह कोड का एक बहुत कुछ देखा है?
int MyClass::getFoo() { return m_foo; } // Removed 'const' and '&'
void MyClass::setFoo(const int foo) { m_foo = foo; } // Removed '&'
एक आदिम प्रकार के संदर्भ को पास करने के लिए उसी प्रकार के मूल्य को पारित करने के समान (या अधिक) प्रयास की आवश्यकता होनी चाहिए, है ना?
यह सिर्फ बाद में एक संख्या है ...
क्या यह कुछ माइक्रो-ऑप्टिमाइज़ेशन का प्रयास किया गया है या क्या कोई वास्तविक लाभ है?
"संदर्भ (कॉन्स या नहीं) वापस करना बहुत खतरनाक है" - मैं उत्सुक हूं, फिर आप अधिक हेवीवेट मूल्य कैसे वापस करते हैं? हो सकता है कि खराब डिजाइन का संकेत हो, लेकिन मैं कॉन्स रेफरी द्वारा स्ट्रिंग्स लौटता हूं। –
@me - मैं यह नहीं कह रहा हूं कि स्ट्रिंग हेवीवेट हैं, मैं बस उन्हें कॉपी करने के लिए (स्वीकार्य रूप से शायद मामूली) ओवरहेड से बचना पसंद करता हूं। –
इस तरह आपको ऑब्जेक्ट जीवनकाल के बारे में सोचना होगा। यह जटिल डेटाटाइप के लिए लायक हो सकता है, लेकिन प्राइमेटिव्स के लिए जो संदर्भों के समान लागत पर प्रतिलिपि बनाई गई हैं। – sharptooth