2011-09-09 24 views
6

यह देखते हुए कि उपसर्ग यूनरी ऑपरेटरों को "एक गैर-स्थिर सदस्य फ़ंक्शन द्वारा लागू किया जा सकता है, जिसमें कोई पैरामीटर नहीं है या एक पैरामीटर" (§13.5.1 [over.unary]/1) के साथ गैर-सदस्य फ़ंक्शन है, क्या वहां कोई है किसी भी सदस्य/गैर-सदस्य फ़ंक्शन विकल्पों पर लागू सामान्य encapsulation/कोड पुन: उपयोग डिजाइन तर्कसंगत के अलावा अंतर?यूनरी शून्य अधिभार: सदस्य या गैर-सदस्य?

बाइनरी ऑपरेटरों के लिए, there's a semantic difference क्योंकि गैर-सदस्य अपने बाएं हाथ के संचालन के निहित रूपांतरण की अनुमति देते हैं। यूनरी ऑपरेटरों के लिए ऐसा कुछ प्रतीत नहीं होता है, फिर भी मानक std::complex के गैर-सदस्य (§26.4.6 [complex.ops]) के रूप में अनियमित अस्वीकरण ऑपरेटर को परिभाषित करता है, जबकि std::valarray और std::duration है यूनरी अस्वीकरण ऑपरेटर सदस्य हैं (§26.6.2.6 [valarray.unary], §20.11.5.3 [time.duration.arithmetic])। क्या कोई बारीक है?

+1

मानक के विशिष्ट वर्गों का हवाला देते समय, आप यह उल्लेख करना चाहेंगे कि आप किस संस्करण का जिक्र कर रहे हैं। –

+0

@ एंड्रे कैरॉन सी ++ 11 के एन 32 9 0 संस्करण से उद्धृत, यही कारण है कि मैं 'अवधि 'लाने में सक्षम था। – Cubbi

उत्तर

2

जहां तक ​​मुझे पता है कि कोई गैर-ऑपरेटर फ़ंक्शन सदस्य या गैर-सदस्य होना चाहिए, यह तय करने की तुलना में कोई अंतर नहीं है। जब संभव हो तो गैर-सदस्य, गैर-मित्र को पसंद करें (मानक एल्गोरिदम की तरह)।

0

जब संभव हो तो सदस्यों का उपयोग करना अधिक समझ में आता है, क्योंकि आपको दोस्तों के साथ पागल होना नहीं है। लेकिन अन्यथा, यह सिर्फ एक कोड शैली का निर्णय है।

+1

यदि संभव हो तो सबकुछ गैर-सदस्य नॉनफ्रेंड बनाने के बारे में सटर/अलेक्जेंड्रेस्कू नई आयु दिशानिर्देश के बारे में क्या? – Cubbi

+0

@ कब्बी हां कम से कम संभव पहुंच अधिकार देना हमेशा सर्वोत्तम होता है, लेकिन मैं अपने कोड को संक्षिप्त मानता हूं। –

संबंधित मुद्दे