मैंने हर जगह पढ़ा है कि एक संदर्भ को तब शुरू किया जाना चाहिए और फिर से फिर से शुरू नहीं किया जा सकता है।क्या हम सी ++ में संदर्भ को पुन: असाइन कर सकते हैं?
मेरी समझ का परीक्षण करने के लिए, मैंने निम्नलिखित छोटे कार्यक्रम को लिखा है। ऐसा लगता है जैसे मैं वास्तव में एक संदर्भ को पुन: असाइन करने में सफल रहा हूं। क्या कोई मुझे बता सकता है कि वास्तव में मेरे कार्यक्रम में क्या चल रहा है?
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
int main()
{
int i = 5, j = 9;
int &ri = i;
cout << " ri is : " << ri <<"\n";
i = 10;
cout << " ri is : " << ri << "\n";
ri = j; // >>> Is this not reassigning the reference? <<<
cout << " ri is : " << ri <<"\n";
getch();
return 0;
}
कोड ठीक संकलित करता है तथा उत्पादन मैं उम्मीद के रूप में है:
ri is : 5
ri is : 10
ri is : 9
'const int और cri = i' क्यों अनुमति नहीं है? आप किस लाइन पर लिख नहीं सकते? मेरे लिए कारण संकलक किसी भी स्थान पर ऐसी लाइन डालने की अनुमति देता है। इसके अलावा, यह एक स्पष्ट और संक्षिप्त उत्तर है! – mercury0114
मैंने यह नहीं कहा कि इसकी अनुमति नहीं है - जैसा कि आपने देखा है, एक गैर-कॉन्स्ट चर के लिए एक कॉन्स्ट रेफरी लेना ठीक है। मैंने कहा कि यह आपको उस_ को असाइन करने की अनुमति नहीं देता है, जिसका अर्थ है कि आप मूल चर को एक कॉन्स रेफरी के माध्यम से नहीं बदल सकते हैं, जैसे ओपी ने 'ri' के साथ किया था। – Useless
ओह ठीक है, अब मैं देख रहा हूं कि आपका क्या मतलब है। – mercury0114