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

C++-এ পিউর ভার্চুয়াল ফাংশন এবং অ্যাবস্ট্র্যাক্ট ক্লাস


পিউর ভার্চুয়াল ফাংশন হলো C++-এ একটি ভার্চুয়াল ফাংশন যার জন্য আমাদের কোনো ফাংশন ডেফিনিশন লিখতে হয় না এবং শুধু ডিক্লেয়ার করতে হয়। এটাকে ডিক্লেরেশনে ০ অ্যাসাইন করে ডিক্লেয়ার করা হয়।

অ্যাবস্ট্র্যাক্ট ক্লাস হলো C++-এ এমন একটি ক্লাস যাতে কমপক্ষে একটি পিউর ভার্চুয়াল ফাংশন থাকে।

  • অ্যাবস্ট্র্যাক্ট ক্লাসে নরমাল ফাংশন এবং ভেরিয়েবল পিউর ভার্চুয়াল ফাংশনের পাশাপাশি থাকতে পারে।

  • অ্যাবস্ট্র্যাক্ট ক্লাস ইনস্ট্যানশিয়েট করা যায় না, কিন্তু অ্যাবস্ট্র্যাক্ট ক্লাস টাইপের পয়েন্টার এবং রেফারেন্স তৈরি করা যায়।

  • অ্যাবস্ট্র্যাক্ট ক্লাস মূলত আপকাস্টিং-এর জন্য ব্যবহৃত হয়, যাতে এর ডেরাইভড ক্লাসগুলো এর ইন্টারফেস ব্যবহার করতে পারে।

  • যদি অ্যাবস্ট্র্যাক্ট ক্লাসের ডেরাইভড ক্লাস থাকে, তবে সেগুলোকে সকল পিউর ভার্চুয়াল ফাংশন ইমপ্লিমেন্ট করতে হবে, অন্যথায় সেগুলোও অ্যাবস্ট্র্যাক্ট হয়ে যাবে।

  • আমরা অ্যাবস্ট্র্যাক্ট ক্লাসের অবজেক্ট তৈরি করতে পারি না কারণ আমরা Vtable-এ পিউর ভার্চুয়াল ফাংশনের জন্য একটি স্লট রিজার্ভ করি, কিন্তু কোনো অ্যাড্রেস রাখি না, তাই Vtable অপূর্ণ থাকে।

উদাহরণ কোড

#include <iostream> 
using namespace std; 
class B { 
public:
    virtual void s() = 0; // পিউর ভার্চুয়াল ফাংশন
}; 
class D: public B { 
public:
    void s() { 
        cout << "Virtual Function in Derived class\n"; 
    } 
}; 
int main() { 
    B *b; 
    D dobj; 
    b = &dobj; 
    b->s(); 
}

আউটপুট

Virtual Function in Derived class

  1. C++-এ ক্লাস এবং অবজেক্ট

  2. C#-এ virtual এবং abstract ফাংশনের পার্থক্য

  3. C#-এ অ্যাবস্ট্র্যাক্ট ক্লাস

  4. স্কালাতে Traits এবং Abstract Classes-এর পার্থক্য