কনসেপ্টটি সহজে বোঝার জন্য একটি নমুনা C++ প্রোগ্রাম বিবেচনা করা যাক:
#includeusing 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() কল হয়েছে।