कोड स्निपेट में, मैं वर्ग स्कोप के बाहर निजी सदस्य चर का उपयोग करने में सक्षम हूं। हालांकि यह कभी नहीं किया जाना चाहिए, इस मामले में इसकी अनुमति क्यों है? संदर्भ के द्वारा एक लौटा निजी चर प्राप्त करने के लिए यह एक बुरा अभ्यास है?जब मैं सार्वजनिक सदस्य समारोह से संदर्भ वापस करता हूं तो मैं निजी सदस्यों का खुलासा क्यों कर सकता हूं?
#include <iostream>
#include <cstdlib>
class foo
{
int x;
public:
foo(int a):x(a){}
int methodOne() { return x; }
int& methodTwo() { return x; }
};
int main()
{
foo obj(10);
int& x = obj.methodTwo();
x = 20; // With this statement, modifying the state of obj::x
std::cout << obj.methodOne();
getchar();
return 0;
}
और इस विधि के संबंध में, रिटर्न प्रकार क्या बताता है? और मुझे इस प्रकार का रिटर्न प्रकार कब होना चाहिए?
int& methodTwo() { return x; }
पुनश्च: मैं माफी चाहता हूँ अगर विषय पंक्ति अस्पष्ट है। क्या कोई इसे यहां प्रासंगिक सामग्री में बदल सकता है। धन्यवाद।
द्वारा गुजरने वाले लोगों के लिए: [यह प्रश्न] (http://stackoverflow.com/questions/8005514/is-returning-references-of-member-variables-bad-pratice) सुझाव देता है कि यह आपके संदर्भ को वापस करने के लिए खतरनाक हो सकता है कक्षा के सदस्य – Arthur
@ आर्थर: हाँ, जैसा कि मैंने कहा था, यह इस बात पर निर्भर करता है कि आप क्या करना चाहते हैं। यह 'std :: vector' के लिए ठीक काम करता है - लेकिन ऐसे कई मामले हैं जहां यह भी गलत काम है। –