class A {
public:
string operator+(const A& rhs) {
return "this and A&";
}
};
string operator+(const A& lhs, const A& rhs) {
return "A& and A&";
}
string operator-(const A& lhs, const A& rhs) {
return "A& and A&";
}
int main() {
A a;
cout << "a+a = " << a + a << endl;
cout << "a-a = " << a - a << endl;
return 0;
}
//output
a+a = this and A&
a-a = A& and A&
मुझे उत्सुकता है कि कक्षा के अंदर ऑपरेटर को बाहर की बजाय क्यों कहा जाता है। क्या ऑपरेटर के बीच कुछ प्राथमिकता है?कक्षा के अंदर एक ऑपरेटर कैसे काम करता है?
उसी नाम के कई कार्यों के बीच चयन करने की प्रक्रिया को * ओवरलोड रिज़ॉल्यूशन * कहा जाता है। इस कोड में, सदस्य को प्राथमिकता दी जाती है क्योंकि गैर-सदस्य को योग्यता रूपांतरण की आवश्यकता होती है ('const' को' lhs' जोड़ना) लेकिन सदस्य नहीं करता है। यदि आपने सदस्य को 'const'' (जिसे आपको करना चाहिए, क्योंकि यह '* यह' को संशोधित नहीं करता है) तो यह संदिग्ध होगा –