কম্পিউটার

C++ এ ফাংশন ওভারলোডিং এবং const কীওয়ার্ড


C++ এ, আমরা ফাংশন ওভারলোড করতে পারি। কিছু ফাংশন স্বাভাবিক ফাংশন; কিছু ধ্রুব টাইপ ফাংশন. ধ্রুব ফাংশন এবং স্বাভাবিক ফাংশন সম্পর্কে ধারণা পেতে একটি প্রোগ্রাম এবং এর আউটপুট দেখি।

উদাহরণ

#include <iostream>
using namespace std;
class my_class {
   public:
      void my_func() const {
         cout << "Calling the constant function" << endl;
      }
      void my_func() {
         cout << "Calling the normal function" << endl;
      }
};
int main() {
   my_class obj;
   const my_class obj_c;
   obj.my_func();
   obj_c.my_func();
}

আউটপুট

Calling the normal function
Calling the constant function

এখানে আমরা দেখতে পাচ্ছি যে বস্তুটি স্বাভাবিক হলে স্বাভাবিক ফাংশন বলা হয়। যখন বস্তুটি ধ্রুবক থাকে, তখন ধ্রুবক ফাংশন বলা হয়।

যদি দুটি ওভারলোড পদ্ধতিতে পরামিতি থাকে, এবং একটি প্যারামিটার স্বাভাবিক, আরেকটি ধ্রুবক, তাহলে এটি ত্রুটি তৈরি করবে৷

উদাহরণ

#include <iostream>
using namespace std;
class my_class {
   public:
      void my_func(const int x) {
         cout << "Calling the function with constant x" << endl;
      }
      void my_func(int x){
         cout << "Calling the function with x" << endl;
      }
};
int main() {
   my_class obj;
   obj.my_func(10);
}

আউটপুট

[Error] 'void my_class::my_func(int)' cannot be overloaded
[Error] with 'void my_class::my_func(int)'

কিন্তু যদি আর্গুমেন্ট রেফারেন্স বা পয়েন্টার টাইপ হয়, তাহলে এটি ত্রুটি তৈরি করবে না।

উদাহরণ

#include <iostream>
using namespace std;
class my_class {
   public:
      void my_func(const int *x) {
         cout << "Calling the function with constant x" << endl;
      }
      void my_func(int *x) {
         cout << "Calling the function with x" << endl;
      }
};
int main() {
   my_class obj;
   int x = 10;
   obj.my_func(&x);
}

আউটপুট

Calling the function with x

  1. C++ এ #define এবং const কীওয়ার্ডের মধ্যে পার্থক্য কী?

  2. C++ এ const কীওয়ার্ড কী?

  3. পিএইচপি-তে ফাংশন ওভারলোডিং এবং ওভাররাইডিং

  4. C# এ শুধুমাত্র পঠনযোগ্য এবং const কীওয়ার্ডের মধ্যে পার্থক্য