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

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


কনসেপ্টটি সহজে বোঝার জন্য একটি নমুনা C++ প্রোগ্রাম বিবেচনা করা যাক:

উদাহরণ কোড
#include 
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; // ক্লাস D-এর একটি অবজেক্ট
    B *b = &d; // B* টাইপের একটি পয়েন্টার যা d-কে নির্দেশ করছে
    b->s(); // "D::s() called" প্রিন্ট করবে
    return 0;
}
আউটপুট
In Derived, a = 0

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

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

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

  2. C++-এ প্রাইভেট এবং প্রোটেক্টেড মেম্বার

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

  4. C++ এবং জাভায় ডিফল্ট ভার্চুয়াল বিহেভিয়ারের পার্থক্য