संभव डुप्लिकेट:
Class Data Encapsulation(private data) in operator overloadingencapsulation का उल्लंघन?
कृपया इस उदाहरण को देखो।
class myClass {
int a;
public :
myClass() {
this->a = 0;
}
myClass(int val) {
this->a = val;
}
void add(myClass &obj2) {
cout << "Result = " << this->a + obj2.a;
obj2.a = 0;
}
void show() {
cout << "a = " << this->a;
}
};
int main() {
myClass obj1(10), obj2(20);
obj2.show(); //prints 20.
obj1.add(obj2);
obj2.show(); //prints 0.
return 0;
}
ऐड() फ़ंक्शन में, मैं obj2 के एक निजी सदस्य का मान तक पहुँचने के लिए जब मैं वास्तव में जोड़ें() obj1 के संदर्भ में कहा है कर रहा हूँ। क्या यह encapsulation का उल्लंघन नहीं है?
पहले मैं सोच रहा था कि संकलक मुझे एक त्रुटि फेंक देगा, लेकिन ऐसा नहीं हुआ।
यदि आप संकलक शिकायत करना चाहते थे, तो इसके बजाय 'const' संदर्भ लेने के लिए 'add' घोषित क्यों न करें? –