C তে আমরা একটি এক্সপ্রেশনের বাম দিকে ফাংশনের নাম ব্যবহার করতে পারি না। C++ এ আমরা এটিকে এভাবে ব্যবহার করতে পারি। এটি এমন কিছু ফাংশন দ্বারা করা যেতে পারে যা কিছু রেফারেন্স ভেরিয়েবল প্রদান করে।
একটি 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
একটি রেফারেন্স ফেরত দেওয়ার সময়, সতর্কতা অবলম্বন করুন যাতে উল্লেখ করা বস্তুটি সুযোগের বাইরে না যায়। তাই স্থানীয় var এর রেফারেন্স ফেরত দেওয়া বৈধ নয়। কিন্তু আপনি সবসময় একটি স্ট্যাটিক ভেরিয়েবলের রেফারেন্স ফেরত দিতে পারেন।
int& func() {
int q;
//! return q; // Compile time error
static int x;
return x; // Safe, x lives outside this scope
}