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

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


নিচের টেবিলে ভার্চুয়াল এবং পিউর ভার্চুয়াল ফাংশনের পার্থক্য দেখানো হলো -

ভার্চুয়াল ফাংশনপিউর ভার্চুয়াল ফাংশন
ভার্চুয়াল ফাংশনের ক্লাসে ডেফিনিশন থাকে।পিউর ভার্চুয়াল ফাংশনের কোনো ডেফিনিশন নেই।
ডিক্লেরেশন: virtual funct_name(parameter_list) { ... };ডিক্লেরেশন: virtual funct_name(parameter_list) = 0;
এটার ডেরাইভড ক্লাসের কোনো কনসেপ্ট নেই।যদি একটি ক্লাসে কমপক্ষে একটি পিউর ভার্চুয়াল ফাংশন থাকে, তবে সেটি অ্যাবস্ট্র্যাক্ট ডিক্লেয়ার করা হয়।
প্রয়োজনে বেস ক্লাস ভার্চুয়াল ফাংশন ওভাররাইড করতে পারে।পিউর ভার্চুয়াল ফাংশন হলে ডেরাইভড ক্লাসকে অবশ্যই ওভাররাইড করতে হবে।

ভার্চুয়াল ফাংশন

উদাহরণ কোড

#include <iostream> 
using namespace std; 
class B { 
public:
    virtual void s() { // ভার্চুয়াল ফাংশন
        cout << " In Base \n"; 
    } 
}; 
class D: public B { 
public:
    void s() { 
        cout << "In Derived \n"; 
    } 
}; 
int main(void) { 
    D d; // ক্লাস D-এর অবজেক্ট
    B *b = &d; // B* টাইপের পয়েন্টার d-কে পয়েন্ট করছে
    b->s(); // প্রিন্ট করবে "D::s() called"
    return 0; 
}

আউটপুট

In Derived

পিউর ভার্চুয়াল ফাংশন

উদাহরণ কোড

#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; // ক্লাস D-এর অবজেক্ট
    b = &dobj; // B* টাইপের পয়েন্টার dobj-কে পয়েন্ট করছে
    b->s(); // প্রিন্ট করবে "D::s() called"
}

আউটপুট

Virtual Function in Derived class

  1. C++-এ string এবং char[] টাইপের পার্থক্য

  2. C++-এ struct এবং typedef struct-এর পার্থক্য

  3. C++-এ new অপারেটর এবং operator new-এর পার্থক্য কী?

  4. C#-তে মেথড (Method) এবং ফাংশন (Function) এর পার্থক্য