কম্পিউটার

C++ এ ডিফল্ট আর্গুমেন্ট এবং ভার্চুয়াল ফাংশন


ধারণাটি সহজে দাঁড়ানোর জন্য C++-এ একটি নমুনা প্রোগ্রাম বিবেচনা করা যাক

উদাহরণ কোড

#include<iostream>
using namespace std;
class B {
   public:
      virtual void s(int a = 0) {
         cout<<" In Base \n";
      }
};
class D: public B {
   public:
      virtual void s(int a) {
         cout<<"In Derived, a="<<a;
      }
};
int main(void) {
   D d; // An object of class D
   B *b= &d;// A pointer of type B* pointing to d
   b->s();// prints"D::s() called"
   return 0;
}

আউটপুট

In Derived, a = 0

এই আউটপুটে, আমরা লক্ষ্য করি যে, প্রাপ্ত ক্লাসের s() বলা হয় এবং বেস ক্লাস s() এর ডিফল্ট মান ব্যবহার করা হয়।

ডিফল্ট আর্গুমেন্ট ফাংশনের স্বাক্ষরে অংশগ্রহণ করে না। সুতরাং বেস ক্লাস এবং ডিরাইভড ক্লাসে s() এর স্বাক্ষর একই হিসাবে বিবেচিত হয়, তাই বেস ক্লাসের s() ওভাররাইড করা হয়। কম্পাইলের সময় ডিফল্ট মান ব্যবহার করা হয়। যখন কম্পাইলার চেক করে যে একটি ফাংশন কলে একটি আর্গুমেন্ট অনুপস্থিত, এটি প্রদত্ত ডিফল্ট মান প্রতিস্থাপন করে। অতএব, উপরের প্রোগ্রামে, কম্পাইলের সময় x এর মান প্রতিস্থাপিত হয় এবং রান টাইমে, derived class এর s() বলা হয়। কম্পাইলের সময় a-এর মান প্রতিস্থাপিত হয় এবং রান টাইমে প্রাপ্ত ক্লাসের s() বলা হয়।


  1. C++ এ আর্লি বাইন্ডিং এবং লেট বাইন্ডিং

  2. C++ এ ব্যক্তিগত ও সুরক্ষিত সদস্য

  3. C++ এ ফ্রেন্ড ক্লাস এবং ফাংশন

  4. কিভাবে ডিফল্ট ভার্চুয়াল আচরণ C++ এবং জাভাতে ভিন্ন হয়?