यह थोड़ा अधिक विस्तार हो सकता है, लेकिन, सटीक होने के लिए, एक सूचक एक ऑब्जेक्ट वेरिएबल होता है जो किसी अन्य ऑब्जेक्ट का पता संग्रहीत करता है और इसकी एक इकाई होती है: आप एक पॉइंटर के पते का अनुरोध कर सकते हैं, आप कर सकते हैं एक सूचक संशोधित करें ...
संदर्भ (सी ++ भावना, नहीं जावा) चर आपत्ति नहीं कर रहे हैं (वर्तमान मानक में, मेरा मानना है कि कुछ rewording इस के आसपास C++ 0x में जा रहा है), बल्कि उपनाम वस्तुओं के लिए। इसके आस-पास कुछ तकनीकी विवरण हैं, उदाहरण के लिए तथ्य यह है कि आप वस्तुओं के सरणी बना सकते हैं, लेकिन आप संदर्भों के सरणी नहीं बना सकते हैं (संदर्भ वस्तुएं नहीं हैं)।
अब, यदि आप जावा पृष्ठभूमि से आ रहे हैं, तो आपको वास्तव में याद रखने की आवश्यकता है कि (वास्तव में वही नहीं) जावा चर और सी ++ पॉइंटर्स समान चीजें हैं: वे कहीं ऑब्जेक्ट तक पहुंचने के लिए कुंजी रखते हैं, लेकिन सी ++ संदर्भ की अवधारणा जावा में उपलब्ध नहीं है। यही कारण है कि आप जावा में एक swap
आपरेशन लागू कर सकते हैं नहीं, कुछ विशिष्ट प्रकार के अलावा है:
template <typename T>
void swap(T & lhs, T & rhs)
{
T tmp = lhs;
lhs = rhs;
rhs = tmp;
}
int main() {
int a = 1, b = 5;
swap(a, b); // a == 5, b == 1 after this call in this context
}
यदि आप मन में है कि रखने के लिए और आप समझते हैं कि जावा संदर्भ में मूल्य (संदर्भ की एक प्रति से पारित कर रहे हैं समारोह में पारित किया जाता है) तो आपने सी ++ फ़ंक्शन कॉल सेमेन्टिक्स को समझने में एक अच्छा कदम उठाया है।
स्रोत
2011-01-24 19:50:49