अधिक भार सबसे अच्छा अभ्यास (इस मामले में) है कौन सा:तुलना ऑपरेटर
bool Foo::operator==(const Foo& other) {
return bar == other.bar;
}
// Implementation 1
bool Foo::operator!=(const Foo& other) {
return bar != other.bar
}
// Implementation 2
bool Foo::operator!=(const Foo& other) {
return !(*this == other);
}
की तरह>, <, < =,> = ऑपरेटरों जब संभव हो मैं कार्यान्वयन 2 के साथ जाना होगा के लिए। हालांकि, के लिए! = मुझे लगता है कि कार्यान्वयन 1 बेहतर है क्योंकि एक और विधि कॉल नहीं किया गया है, क्या यह सही है?
मैं इसे सही तरीके से व्यक्त करने का सबसे स्वाभाविक तरीका लिखूंगा। संकलक शायद इसे संकलित करने का एक अच्छा काम करने जा रहा है जिसे आप चुनते हैं। – Flexo
ठीक है धन्यवाद। एक साइड नोट के रूप में, मुझे पता है कि अगर == रास्ता बहुत जटिल है, तो कार्यान्वयन 2 बेहतर होगा, लेकिन यह एक और मामला है। – blaze
आपको प्रत्येक कार्य में 'const' जोड़ना चाहिए। सदस्य कार्यों के बजाए नि: शुल्क कार्यों का उपयोग करने पर भी विचार करें, क्योंकि पूर्व प्रकार और रूपांतरणों के संबंध में सममित हैं जहां उत्तरार्द्ध नहीं हैं। यह अधिक महत्वपूर्ण है यदि आपका प्रकार अन्य प्रकारों से निहित रूप से परिवर्तित किया जा सकता है। –