কম্পিউটার

C++-এ is_abstract টেমপ্লেট


এই নিবন্ধে আমরা C++ STL-এ std::is_abstract টেমপ্লেটের কাজ, সিনট্যাক্স এবং উদাহরণ নিয়ে আলোচনা করব।

Is_abstract টেমপ্লেট ক্লাসটি একটি বিমূর্ত ক্লাস কিনা তা পরীক্ষা করতে সাহায্য করে।

এবস্ট্রাক্ট ক্লাস কি?

অ্যাবস্ট্রাক্ট ক্লাস এমন একটি ক্লাস যার অন্তত একটি বিশুদ্ধ ভার্চুয়াল ফাংশন রয়েছে। আমরা অ্যাবস্ট্রাক্ট ক্লাস ব্যবহার করি কারণ যখন আমরা ফাংশনটি সংজ্ঞায়িত করি, তখন আমরা এর বাস্তবায়ন জানি না, তাই এটি সেই ক্ষেত্রে খুব সহায়ক যখন আমরা জানি না যে একটি ক্লাসের ফাংশনটি আরও কী করতে হবে তবে আমরা নিশ্চিত যে সেখানে আমাদের সিস্টেমের এই মত একটি ফাংশন হতে হবে. সুতরাং, আমরা একটি বিশুদ্ধ ভার্চুয়াল ফাংশন ঘোষণা করি যা শুধুমাত্র ঘোষণা করা হয় এবং সেই ফাংশনের বাস্তবায়ন নেই৷

সুতরাং, যখন আমরা ক্লাসের উদাহরণ থেকে পরীক্ষা করতে চাই যে ক্লাসটি একটি অ্যাবস্ট্রাক্ট ক্লাস কি না, আমরা is_abstract() ব্যবহার করি।

is_abstract() itegral_constant থেকে উত্তরাধিকারসূত্রে প্রাপ্ত এবং সত্য_টাইপ বা মিথ্যা_টাইপ দেয়, ক্লাস T-এর উদাহরণ পলিমরফিক ক্লাস টাইপ কিনা তা নির্ভর করে।

সিনট্যাক্স

template <class T> struct is_abstract;

পরামিতি

এই টেমপ্লেটে শুধুমাত্র একটি প্যারামিটার T থাকতে পারে, যেটি ক্লাস টাইপ তা পরীক্ষা করার জন্য যে ক্লাসটি একটি বিমূর্ত শ্রেণী কি না।

রিটার্ন মান

এই ফাংশনটি বুল টাইপ মান প্রদান করে, সত্য বা মিথ্যা।

যদি T একটি বিমূর্ত শ্রেণী হয় তবে এটি সত্য এবং T একটি বিমূর্ত শ্রেণী না হলে মিথ্যা প্রদান করে৷

উদাহরণ

#include <iostream>
#include <type_traits>
using namespace std;
struct TP_1 {
   int var;
};
struct TP_2 {
   virtual void dummy() = 0;
};
class TP_3 : TP_2 {
};
int main() {
   cout << boolalpha;
   cout << "checking for is_abstract: ";
   cout << "\nstructure TP_1 with one variable :"<< is_abstract<TP_1>::value;
   cout << "\nstructure TP_2 with one virtual variable : "<< is_abstract<TP_2>::value;
   cout << "\nclass TP_3 which is derived from TP_2 structure : "<< is_abstract<TP_3>::value;
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
checking for is_abstract:
structure TP_1 with one variable : false
structure TP_2 with one virtual variable : true
class TP_3 which is derived from TP_2 structure : true

উদাহরণ

#include <iostream>
#include <type_traits>
using namespace std;
struct TP_1 {
   virtual void dummy() = 0;
};
class TP_2 {
   virtual void dummy() = 0;
};
struct TP_3 : TP_2 {
};
int main() {
   cout << boolalpha;
   cout << "checking for is_abstract: ";
   cout << "\nstructure TP_1 with one virtual function :"<< is_abstract<TP_1>::value;
   cout << "\nclass TP_2 with one virtual function : "<< is_abstract<TP_2>::value;
   cout << "\nstructure TP_3 which is derived from TP_2 class : "<< is_abstract<TP_3>::value;
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
checking for is_abstract:
structure TP_1 with one virtual function : true
class TP_2 with one virtual function : true
structure TP_3 which is derived from TP_2 class : true

  1. C++ এ ভার্চুয়াল বেস ক্লাস

  2. C++ এ () এ স্ট্রিং

  3. C++ এ স্ট্রাকচার বনাম ক্লাস

  4. C++ এ স্থানীয় ক্লাস