কম্পিউটার টিউটোরিয়াল

C++-এ পাস-বাই-ভ্যালু বনাম পাস-বাই-রেফারেন্স: কোনটি ভালো?

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

কল বাই রেফারেন্স কখন ব্যবহার করবেন?

  • যখন পাস করা আর্গুমেন্টের মান ইনভোকার ফাংশনে পরিবর্তন করতে চান।

  • এক ফাংশন শুধু এক মান রিটার্ন করতে পারে। একাধিক মান পেতে হলে আউটপুট আর্গুমেন্ট হিসেবে রেফারেন্স পাস করুন।

  1. C#-এ পাস বাই ভ্যালু (Pass by Value) এবং রেফারেন্স প্যারামিটার (Reference Parameters) এর পার্থক্য

  2. পাইথনে পাস বাই রেফারেন্স বনাম ভ্যালু (Pass by Reference vs Value)

  3. WhatsApp vs Telegram: কোনটি ভালো?

  4. Xbox One X vs Xbox One S: কোন কনসোল সেরা ভ্যালু দেয়?