जब कोई वर्ग operator+
ओवरलोड करता है, तो इसे कॉन्स घोषित किया जाना चाहिए क्योंकि यह ऑब्जेक्ट पर कोई असाइनमेंट नहीं करता है? इसके अलावा, मुझे पता है कि operator=
और operator+=
एक संदर्भ लौटाता है क्योंकि एक असाइनमेंट किया जाता है। लेकिन, operator+
के बारे में क्या? जब मैं इसे कार्यान्वित करता हूं तो क्या मुझे वर्तमान ऑब्जेक्ट की प्रतिलिपि बनाना चाहिए, उस ऑब्जेक्ट को उसमें जोड़ें, और उस मान को वापस कर दें?सी ++ - क्या मुझे 'ऑपरेटर +' कॉन्स बनाना चाहिए? और क्या यह एक संदर्भ वापस करता है?
class Point
{
public:
int x, int y;
Point& operator += (const Point& other) {
X += other.x;
Y += other.y;
return *this;
}
// The above seems pretty straightforward to me, but what about this?:
Point operator + (const Point& other) const { // Should this be const?
Point copy;
copy.x = x + other.x;
copy.y = y + other.y;
return copy;
}
};
इस operator+
का सही कार्यान्वयन है:
यहाँ मैं क्या किया है? या क्या ऐसा कुछ है जो मुझे अनदेखा कर रहा है जो परेशानी या अवांछित/अपरिभाषित व्यवहार कर सकता है?
ऑपरेटर ओवरलोडिंग के कई विवरण यहां पाए जा सकते हैं: http://stackoverflow.com/questions/4421706/operator-overloading – chris