কম্পিউটার

একটি ভার্চুয়াল ফাংশন এবং C++ এ একটি বিশুদ্ধ ভার্চুয়াল ফাংশনের মধ্যে পার্থক্য


নিম্নলিখিত টেবিলটি ভার্চুয়াল এবং বিশুদ্ধ ভার্চুয়াল ফাংশনের মধ্যে পার্থক্য দেখায়:

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

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

উদাহরণ কোড

#include <iostream>
using namespace std;
class B {
   public:
      virtual void s() //virtual function {
         cout<<" In Base \n";
      }
};

class D: public B {
   public:
      void s() {
         cout<<"In Derived \n";
      }
};

int main(void) {
   D d; // An object of class D
   B *b= &d;// A pointer of type B* pointing to d
   b->s();// prints"D::s() called"
   return 0;
}

আউটপুট

In Derived

বিশুদ্ধ ভার্চুয়াল ফাংশন

উদাহরণ কোড

#include<iostream>
using namespace std;
class B {
   public:
      virtual void s() = 0; // Pure Virtual Function
};

class D:public B {
   public:
      void s() {
         cout << " Virtual Function in Derived class\n";
      }
};

int main() {
   B *b;
   D dobj; // An object of class D
   b = &dobj;// A pointer of type B* pointing to dobj
   b->s();// prints"D::s() called"
}

আউটপুট

Virtual Function in Derived class

  1. C++ এ স্ট্রিং এবং char[] প্রকারের মধ্যে পার্থক্য

  2. C++ প্রোগ্রামে 'struct' এবং 'typedef struct' এর মধ্যে পার্থক্য?

  3. C++ এ নতুন অপারেটর এবং নতুন অপারেটরের মধ্যে পার্থক্য?

  4. C# এ পদ্ধতি এবং ফাংশনের মধ্যে পার্থক্য