सी में हम अभिव्यक्ति के बाईं ओर फ़ंक्शन नाम का उपयोग नहीं कर सकते हैं। सी ++ में हम इसे इस तरह इस्तेमाल कर सकते हैं। यह कुछ फ़ंक्शन द्वारा किया जा सकता है जो कुछ संदर्भ चर देता है।
C++ फ़ंक्शन किसी संदर्भ को उसी तरह वापस कर सकता है जैसे वह एक सूचक देता है।
जब कोई फ़ंक्शन एक संदर्भ देता है, तो यह उसके रिटर्न मान पर एक निहित सूचक देता है। इस तरह, एक फ़ंक्शन का उपयोग असाइनमेंट स्टेटमेंट के बाईं ओर किया जा सकता है। उदाहरण के लिए, इस सरल कार्यक्रम पर विचार करें -
उदाहरण
#include <iostream> #include <ctime> using namespace std; double vals[] = {10.1, 12.6, 33.1, 24.1, 50.0}; double& setValues( int i ) { return vals[i]; // return a reference to the ith element } // main function to call above defined function. int main () { cout << "Value before change" << endl; for ( int i = 0; i < 5; i++ ) { cout << "vals[" << i << "] = "; cout << vals[i] << endl; } setValues(1) = 20.23; // change 2nd element setValues(3) = 70.8; // change 4th element cout << "Value after change" << endl; for ( int i = 0; i < 5; i++ ) { cout << "vals[" << i << "] = "; cout << vals[i] << endl; } return 0; }
आउटपुट
Value before change vals[0] = 10.1 vals[1] = 12.6 vals[2] = 33.1 vals[3] = 24.1 vals[4] = 50 Value after change vals[0] = 10.1 vals[1] = 20.23 vals[2] = 33.1 vals[3] = 70.8 vals[4] = 50
किसी संदर्भ को वापस करते समय, सावधान रहें कि जिस वस्तु को संदर्भित किया जा रहा है वह गुंजाइश से बाहर नहीं है। इसलिए स्थानीय संस्करण का संदर्भ वापस करना कानूनी नहीं है। लेकिन आप हमेशा एक स्थिर चर पर एक संदर्भ वापस कर सकते हैं।
int& func() { int q; //! return q; // Compile time error static int x; return x; // Safe, x lives outside this scope }