मैंने यह देखने का निर्णय लिया कि किसी सदस्य को संदर्भ निर्दिष्ट करने से सदस्य को संदर्भ मिलेगा। मैंने परीक्षण करने के लिए निम्नलिखित स्निपेट लिखा था। एक सदस्य वर्ग के रूप में std::string
के साथ एक साधारण वर्ग Wrapper
है। मैं निर्माता में const string&
लेता हूं और इसे सार्वजनिक सदस्य चर के लिए असाइन करता हूं। बाद में main()
विधि में मैं सदस्य चर को संशोधित करता हूं लेकिन string
मैं कन्स्ट्रक्टर को पास कर देता हूं अपरिवर्तित रहता है, कैसे आते हैं? मुझे लगता है कि जावा में चर बदल गया होगा, क्यों नहीं इस कोड स्निपेट में? संदर्भ इस मामले में वास्तव में कैसे काम करते हैं?किसी निर्माता के संदर्भ में पासिंग
#include <iostream>
#include <string>
using namespace std;
class Wrapper
{
public:
string str;
Wrapper(const string& newStr)
{
str = newStr;
}
};
int main (int argc, char * const argv[])
{
string str = "hello";
cout << str << endl;
Wrapper wrapper(str);
wrapper.str[0] = 'j'; // should change 'hello' to 'jello'
cout << str << endl;
}
सी ++ में प्रकार आप जो डिक्री करते हैं, और वे जादूगर रूप से कुछ और नहीं बनते हैं। आप 'स्ट्रिंग' कहते हैं, और आपको 'स्ट्रिंग' मिलता है। यदि आप एक संदर्भ चाहते थे, तो आप 'स्ट्रिंग' कहेंगे। –
आपने बहुत सरल प्रश्न वाले लोगों से दुर्व्यवहार किया :) – Mikhail
जावा में वेरिएबल नहीं बदला होगा क्योंकि कोड संकलित नहीं होगा; जावा में तारों को संशोधित करने की अनुमति नहीं है। –