পিউর ভার্চুয়াল ফাংশন হলো 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