C++-এ ফাংশনে আর্গুমেন্ট পাস করার তিনটি পদ্ধতি রয়েছে:
- কল বাই ভ্যালু
- কল বাই রেফারেন্স
- কল বাই অ্যাড্রেস
কল বাই অ্যাড্রেসকে কখনও কখনও কল বাই রেফারেন্স বলা হয়, কিন্তু C++-এ এগুলো আলাদা। কল বাই অ্যাড্রেসে পয়েন্টার ব্যবহার করে ঠিক মেমরি অ্যাড্রেস পাস করা হয়, কল বাই রেফারেন্সে রেফারেন্স ভেরিয়েবল (আলিয়াস) পাস করা হয়। C-এ এই ফিচার নেই।
কল বাই ভ্যালু
কল বাই ভ্যালুতে আর্গুমেন্ট হিসেবে পাস করা একচুয়াল মান অপারেশন করার পরও অপরিবর্তিত থাকে। এটি মেমরির স্ট্যাক সেকশনে ভেরিয়েবলের একটি কপি তৈরি করে। মান পরিবর্তন করলে কপির মান বদলে, মূল মান অপরিবর্তিত থাকে।
উদাহরণ কোড
#include <iostream>
using namespace std;
void my_function(int x) {
x = 50;
cout << "Value of x from my_function: " << x << endl;
}
int main() {
int x = 10;
my_function(x);
cout << "Value of x from main function: " << x;
}আউটপুট
Value of x from my_function: 50 Value of x from main function: 10
কল বাই রেফারেন্স
কল বাই রেফারেন্সে আর্গুমেন্ট হিসেবে পাস করা একচুয়াল মান অপারেশনের পর বদলে যায়। এটি স্ট্যাকে রেফারেন্সের কপি তৈরি করে এবং রেফারেন্স দিয়ে মান অ্যাক্সেস করে। তাই রেফারেন্স দিয়ে মান পরিবর্তন করলে মূল ভেরিয়েবলটি বদলে যায়।
উদাহরণ কোড
#include <iostream>
using namespace std;
void my_function(int& x) {
x = 50;
cout << "Value of x from my_function: " << x << endl;
}
int main() {
int x = 10;
my_function(x);
cout << "Value of x from main function: " << x;
}আউটপুট
Value of x from my_function: 50 Value of x from main function: 50
কল বাই রেফারেন্স কখন ব্যবহার করবেন?
যখন পাস করা আর্গুমেন্টের মান ইনভোকার ফাংশনে পরিবর্তন করতে চান।
এক ফাংশন শুধু এক মান রিটার্ন করতে পারে। একাধিক মান পেতে হলে আউটপুট আর্গুমেন্ট হিসেবে রেফারেন্স পাস করুন।