Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ में is_abstract टेम्पलेट

इस लेख में हम सी++ एसटीएल में काम करने, वाक्य रचना और std::is_abstract टेम्पलेट के उदाहरणों पर चर्चा करेंगे।

Is_abstract टेम्प्लेट यह जांचने में मदद करता है कि क्लास एक एब्सट्रैक्ट क्लास है या नहीं।

एब्स्ट्रैक्ट क्लास क्या है?

सार वर्ग एक ऐसा वर्ग है जिसमें कम से कम एक शुद्ध आभासी कार्य होता है। हम एब्सट्रैक्ट क्लासेस का उपयोग करते हैं क्योंकि जब हम फ़ंक्शन को परिभाषित करते हैं, तो हम इसके कार्यान्वयन को नहीं जानते हैं, इसलिए यह उस स्थिति में बहुत मददगार होता है जब हमें नहीं पता होता है कि किसी क्लास का फंक्शन आगे क्या करने वाला है, लेकिन हमें यकीन है कि वहाँ हमारे सिस्टम में इस तरह का एक फंक्शन होना चाहिए। इसलिए, हम एक शुद्ध वर्चुअल फ़ंक्शन घोषित करते हैं जो केवल घोषित किया जाता है और उस फ़ंक्शन का कार्यान्वयन नहीं होता है।

इसलिए, जब हम कक्षा के उदाहरण से जांचना चाहते हैं कि वर्ग एक सार वर्ग है या नहीं, तो हम is_abstract() का उपयोग करते हैं।

is_abstract() को itegral_constant से इनहेरिट किया गया है और यह true_type या false_type देता है, यह निर्भर करता है कि क्लास T का इंस्टेंस पॉलीमॉर्फिक क्लास टाइप है या नहीं।

सिंटैक्स

template <class T> struct is_abstract;

पैरामीटर

इस टेम्प्लेट में केवल एक पैरामीटर T हो सकता है, जो यह जांचने के लिए क्लास टाइप का है कि क्लास Ti एक एब्स्ट्रैक्ट क्लास है या नहीं।

रिटर्न वैल्यू

यह फ़ंक्शन बूल प्रकार का मान देता है, सही या गलत।

यदि 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++ स्ट्रिंग क्लास at() . का एक सिंहावलोकन है स्ट्रिंग से वर्णों के अनुक्रम तक पहुँचने के लिए कार्यक्षमता। आगामी खंड में, एक इच्छुक पाठक स्ट्रिंग क्लास प्रोग्रामिंग उदाहरणों के माध्यम से at() के हेरफेर की पूरी समझ प्राप्त कर सकता है। कार्य। स्ट्रिंग क्लास प्रोग्रामिंग श

  1. सी ++ में संरचना बनाम वर्ग

    C++ में संरचना और वर्ग मूल रूप से समान हैं। लेकिन कुछ मामूली अंतर हैं। ये अंतर नीचे की तरह हैं। वर्ग के सदस्य डिफ़ॉल्ट रूप से निजी होते हैं, लेकिन संरचना के सदस्य सार्वजनिक होते हैं। अंतर देखने के लिए आइए इन दो कोडों को देखें। उदाहरण कोड #include <iostream> using namespace std; class my_class

  1. सी ++ में स्थानीय कक्षा

    किसी फ़ंक्शन के अंदर घोषित एक वर्ग को C++ में स्थानीय वर्ग के रूप में जाना जाता है क्योंकि यह उस फ़ंक्शन के लिए स्थानीय होता है। स्थानीय वर्ग का एक उदाहरण इस प्रकार दिया गया है। #include<iostream> using namespace std; void func() {    class LocalClass {    }; } int main()