C++ এ রেফারেন্স দিন

C E Repharensa Dina



C++ পয়েন্টারের পরিবর্তে তার রেফারেন্স দ্বারা একটি মান বা ঠিকানা ফেরত দেওয়ার সুবিধা প্রদান করে। পয়েন্টারের পরিবর্তে রেফারেন্স ব্যবহার করে একটি C++ প্রোগ্রাম পড়া এবং পরিচালনা করা সহজ করে তুলতে পারে। C++ এ, রেফারেন্স এবং পয়েন্টার একে অপরের সাথে ঘনিষ্ঠভাবে সম্পর্কিত। প্রাথমিক পার্থক্য হল যদিও রেফারেন্সগুলি শুধুমাত্র একটি বিকল্প নাম, অন্য একটি ভেরিয়েবলের জন্য 'উনাম', পয়েন্টারগুলি মান যোগ করার মতো ক্রিয়াকলাপে ব্যবহার করা যেতে পারে। একটি রেফারেন্স হল একটি বিকল্প নাম বা আসল মানের ডুপ্লিকেট এবং '&' চিহ্ন দ্বারা চিহ্নিত করা হয়।

উদাহরণ 1:

আমরা 'iostream' হেডার ফাইলটি আমদানি করি এবং তারপর 'std' নামস্থান ব্যবহার করি। হেডার ফাইলগুলি সি++ কোডে আমদানি করা হয় কারণ অনেকগুলি ফাংশন সংজ্ঞায়িত করা হয়েছে। তারপর, আমরা ফাংশনের নাম, 'returnTheValue' এর সাথে “&” চিহ্ন বসিয়ে একটি রিটার্ন রেফারেন্স ফাংশন তৈরি করি।







এখানে, 'মান' রেফারেন্স এখন সন্নিবেশ করা হয়েছে। এর নীচে, আমরা '&value' রেফারেন্স সহ মান এবং ঠিকানা মুদ্রণ করি। তারপরে, আমরা রিটার্ন রেফারেন্স রাখি এবং 'মান' রাখি। এখন, এখানে 'main()' বলা হয়েছে, এবং আমরা '44' এর মান দিয়ে 'n1' শুরু করি। এর নিচে, 'int&n2' শুরু করা হয়েছে 'returnTheValue(n1)' দিয়ে। এখন, আমরা 'n1' এর মান এবং এর ঠিকানা প্রিন্ট করি। তারপর, আমরা 'cout' ব্যবহার করে 'n2' এর মান এবং 'n2' এর ঠিকানা প্রিন্ট করি।



কোড 1:



# অন্তর্ভুক্ত করুন
নামস্থান std ব্যবহার করে;
int এবং রিটার্ন দ্য ভ্যালু ( int এবং মান )
{
cout << 'মান =' << মান << endl
<< 'মূল্যের ঠিকানা হল'
<< এবং মান << endl;
ফিরে মান
}
int প্রধান ( )
{
আপনি n1 = 44 ;
int এবং n2 = returnTheValue ( n1 ) ;
cout << 'n1 = ' << n1 << endl
<< 'n1 এর ঠিকানা হল'
<< এবং n1 << endl;
cout << 'n2 = ' << n2 << endl
<< 'n2 এর ঠিকানা হল'
<< এবং n2 << endl;
ফিরে 0 ;
}


আউটপুট:





এখানে, আমরা লক্ষ্য করতে পারি যে একটি রেফারেন্স হল অন্য একটি ভেরিয়েবলের একটি বিকল্প নাম যা নীচে দেখানো হয়েছে। মানের ঠিকানা হিসাবে, 'n1' এবং 'n2' কখনই পরিবর্তন হয় না।



উদাহরণ 2:

আমরা 'iostream' হেডার ফাইল আমদানি করার পরে 'std' নামস্থান ব্যবহার করি। এর পরে, আমরা একটি রিটার্ন রেফারেন্স ফাংশন তৈরি করতে ফাংশনের নাম 'MyReturnValueFunc' এবং '&' চিহ্ন ব্যবহার করি। 'v1' ভেরিয়েবলের রেফারেন্স এখানে স্থাপন করা হয়েছে। আমরা এর নীচে '&v1' রেফারেন্স সহ মান এবং ঠিকানা মুদ্রণ করি। এর পরে, আমরা এই অবস্থানে 'রিটার্ন' এবং 'v1' ব্যবহার করে 'রিটার্ন রেফারেন্স' সন্নিবেশ করি। এখানে, 'main()' বলা হয়, এবং 'num_1' কে '19' এর মান দিয়ে আরম্ভ করা হয়। 'int&num_2' এর আরম্ভ করা হয় 'MyReturnValueFunc(num_1)' দিয়ে।

বর্তমানে, আমরা 'num_1' এর মান এবং ঠিকানা প্রিন্ট করি এবং 'cout' ব্যবহার করে, আমরা 'num_2' এর মান এবং ঠিকানা প্রিন্ট করি। আমরা এখন 'MyReturnValueFunc' দ্বারা এখানে ফেরত দেওয়া ঠিকানাটি ব্যবহার করে 'num_1' এর মান পরিবর্তন করি। এই ফাংশনটি 'v1' এর বিকল্প নাম প্রদান করে যা 'num_1' এর বিকল্প নামও। সুতরাং, আমরা এর মান পরিবর্তন করি এবং এটি '91' এ সেট করি। আমরা 'MyReturnValueFunc(num_1)' কে '91' বরাদ্দ করি যা এখানে উপনাম হিসাবে কাজ করে। তারপর, আমরা আবার মান এবং “num_1” এর ঠিকানা প্রিন্ট করি।

কোড 2:

# অন্তর্ভুক্ত করুন
নামস্থান std ব্যবহার করে;
int এবং MyReturnValueFunc ( int এবং v1 )
{
cout << 'v1 এর মান = ' << v1 << endl
<< 'v1 ভেরিয়েবলের ঠিকানা হল'
<< এবং v1 << endl;
ফিরে v1;
}
int প্রধান ( )
{
int num_1 = 19 ;
int এবং num_2 = MyReturnValueFunc ( সংখ্যা_1 ) ;
cout << 'সংখ্যা_1 এর মান = ' << সংখ্যা_1 << endl
<< 'num_1 এর ঠিকানা হল'
<< এবং সংখ্যা_1 << endl;
cout << 'সংখ্যা_২ এর মান = ' << সংখ্যা_2 << endl
<< 'num_2 এর ঠিকানা হল'
<< এবং সংখ্যা_2 << endl;
MyReturnValueFunc ( সংখ্যা_1 ) = 91 ;
cout << 'এখন, num_1 এর মান = ' << সংখ্যা_1 << endl
<< 'num_1 এর ঠিকানা হল'
<< এবং সংখ্যা_1 << endl;
ফিরে 0 ;
}


আউটপুট:

নিম্নলিখিত হিসাবে প্রদর্শিত হয়েছে, আমরা দেখতে পাচ্ছি যে একটি রেফারেন্স অন্য ভেরিয়েবলের জন্য একটি বিকল্প নাম মাত্র কারণ “v1”, “num_1”, এবং “num_2” মানগুলির ঠিকানা স্থির থাকে:

উদাহরণ 3:

'iostream' হেডার ফাইলটি আমদানি করা হয় এবং 'std' নামস্থান ব্যবহার করা হয়। যেহেতু অনেকগুলি ফাংশন হেডার ফাইলগুলিতে নির্দিষ্ট করা আছে, আমরা সেগুলিকে C++ কোডগুলিতে আমদানি করি। এখানে, আমরা একটি 'ReturnRefFun()' ফাংশন তৈরি করি যেখানে আমরা 'int& my_ref' রাখি যা রেফারেন্স প্রদান করে। 'int&ReturnRefFun' এখানে রেফারেন্স ফাংশন হিসাবে ঘোষণা করা হয়েছে। এর পরে, আমরা 'my_ref' ভেরিয়েবলের মান বৃদ্ধি করি। এর নীচে, আমরা 'রিটার্ন' রাখি যা 'my_ref' এর রেফারেন্স প্রদান করে।

এর পরে, এখানে 'main()' পদ্ধতিটি চালু করা হয়েছে। তারপর, আমরা '21' দিয়ে 'first_value' ভেরিয়েবল শুরু করি। এর নিচে, আমরা 'ReturnRefFun' ফাংশনে 'first_value' স্থাপন করে রেফারেন্সের কপি ফেরত দিই এবং 'copied_value' ভেরিয়েবলে সংরক্ষণ করি। তারপর, আমরা 'cout' ব্যবহার করে 'first_value' এবং 'copied_value' উভয়ই প্রিন্ট করি। এর নিচে, আমরা 'copied_value++' বসিয়ে 'copied_value' ভেরিয়েবলকে বৃদ্ধি করি। তারপর, আমরা 'copied_value' বৃদ্ধি করার পর এবং 'cout' ব্যবহার করে 'first_value' প্রিন্ট করি। এর পরে, আমরা 'ReturnRefFun(first_value)' দিয়ে 'int&ref_value' ভেরিয়েবল শুরু করার সাহায্যে রেফারেন্স ফেরত দিই।

এর পরে, আমরা 'my_ref' ভেরিয়েবলের মানটি প্রিন্ট করি যা আমরা কপি করেছি। তারপর, আমরা “first_value” ভেরিয়েবলের মান প্রিন্ট করি। এর নিচে, আমরা “ref_value++” বসিয়ে “ref_value” এর মান বৃদ্ধি করি। এর নিচে, আমরা 'ref_value' এর বর্ধিত মান এবং 'cout' এর সাহায্যে 'first_value' ভেরিয়েবল প্রিন্ট করি। যখন 'ref_value' পরিবর্তন করা হয়, তখন 'first_value'ও পরিবর্তিত হবে।

কোড 3:

# অন্তর্ভুক্ত করুন
নামস্থান std ব্যবহার করে;
int এবং রিটার্নরেফফান ( int এবং my_ref ) {
my_ref++;
ফিরে আমার_রেফ;
}
int প্রধান ( ) {
int প্রথম_মূল্য = একুশ ;
int কপি করা_মান =রিটার্নরিফফান ( প্রথম_মূল্য ) ;
cout << 'প্রথম মান হল: ' << প্রথম_মূল্য << endl;
cout << 'কপি করা মান হল: ' << কপি করা_মান << endl;
copied_value++;
cout << 'কপি করা_মান বৃদ্ধি করা হয়েছে: ' << কপি করা_মান << endl;
cout << 'প্রথম মান:' << প্রথম_মূল্য << endl;
int এবং ref_value =রিটার্নরিফফান ( প্রথম_মূল্য ) ;
cout << 'রেফারেন্স কপি করা মান:' << ref_value << endl;
cout << 'প্রথম মান:' << প্রথম_মূল্য << endl;
ref_value++;
cout << 'রেফারেন্স মান বৃদ্ধি করা হয়েছে : ' << ref_value << endl;
cout << 'প্রথম মান:' << প্রথম_মূল্য << endl;
ফিরে 0 ;
}


আউটপুট:

এখানে পূর্ববর্তী কোডের ফলাফল যেখানে আমরা 'রিটার্ন রেফারেন্স' কৌশলটি ব্যবহার করেছি। উদাহরণটি রেফারেন্স ভেরিয়েবলের একটি ডুপ্লিকেট ফেরত দেওয়া এবং নিজেই রেফারেন্স ভেরিয়েবল ফেরত দেওয়ার মধ্যে পার্থক্য দেখায়।

উদাহরণ 4:

এখানে, 'int&rByRef' কে রেফারেন্স ফাংশন হিসাবে ঘোষণা করা হয়েছে যা রেফারেন্স ভেরিয়েবল রিটার্ন করে। আমরা এই 'int&rByref()' ফাংশনে 'int& data' পাস করি। এখানে, আমরা 'ডেটা' ভেরিয়েবলের ঠিকানা প্রিন্ট করি এবং তারপর এর নীচের রিটার্ন রেফারেন্স ব্যবহার করি। এখন, আমরা 'main()' পদ্ধতি চালু করার পরে 'x_var' ভেরিয়েবল শুরু করি। তারপর, আমরা এখানে 'x_var' এর ঠিকানা প্রিন্ট করি 'cout'-এ '&x_var' বসিয়ে।

এর নিচে, আমরা 'int&y_var'-এ 'rByref(x_var)' বরাদ্দ করে রেফারেন্স ভেরিয়েবল ব্যবহার করি। তারপর, আমরা সেই “&y_var” রেফারেন্স ভেরিয়েবলের ঠিকানাও প্রিন্ট করি। এর নিচে, আমরা 'x_var' ভেরিয়েবলটিকে 'z_var' ভেরিয়েবলে কপি করি এবং এই কপি করা ভেরিয়েবলের ঠিকানাও প্রিন্ট করি যা হল '&z_var'। এর পরে, আমরা 'rByref()' ফাংশনটিকে কল করি, এর ভিতরের প্যারামিটার হিসাবে 'x_var' ভেরিয়েবলটি পাস করি এবং এই ভেরিয়েবলটিতে '93' নির্ধারণ করি। আমরা আবার “x_var”-এর ঠিকানা রেন্ডার করি “cout”-এ “&x_var” বসিয়ে।

কোড 4:

# অন্তর্ভুক্ত করুন
নামস্থান std ব্যবহার করে;
int এবং rByref ( int এবং তথ্য )
{
cout << 'তথ্যের ঠিকানা:' << এবং তথ্য << endl;
ফিরে তথ্য
}
int প্রধান ( )
{
int x_var = 42 ;
cout << 'x_var এর ঠিকানা:' << এবং x_var << endl;
int এবং y_var = rByref ( x_var ) ;
cout << 'y_var এর ঠিকানা:' << এবং y_var << endl;
int z_var = rByref ( x_var ) ;
cout << 'z_var এর ঠিকানা:' << এবং z_var << endl;
rByref ( x_var ) = 93 ;
cout << 'x_var এর ঠিকানা:' << এবং x_var << endl;
ফিরে 0 ;
}


আউটপুট:

ফলাফলটি স্পষ্ট করে যে ক্লোন করা ভেরিয়েবলের ঠিকানা, “z_var”, মূল ভেরিয়েবল, “x_var”, রেফারেন্সের অন্যান্য সমস্ত অবস্থান থেকে আলাদা।

উপসংহার

এই টিউটোরিয়ালে 'রিটার্ন রেফারেন্স' ধারণাটি বিস্তারিতভাবে অন্বেষণ করা হয়েছে। আমরা শিখেছি যে 'রিটার্ন রেফারেন্স' C++ প্রোগ্রামিং এর 'পয়েন্টার' এর মত। আমরা আলোচনা করেছি যে কোন ফাংশনটি একটি রেফারেন্স প্রদান করে তা নির্দেশ করার জন্য, '&' চিহ্নটি ফাংশনের রিটার্ন টাইপের সাথে ব্যবহার করা প্রয়োজন। আমরা এই টিউটোরিয়ালে কিছু উদাহরণ এবং তাদের ফলাফল চিত্রিত করেছি এবং এই ধারণাটি বুঝতে পেরেছি।