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

C++ में is_abstract टेम्पलेट

इस लेख में हम C++ STL में std::is_abstract टेम्पलेट के कार्य, सिंटैक्स और उदाहरणों पर चर्चा करेंगे।

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

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

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

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

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

सिंटैक्स

template <class T> struct is_abstract;

पैरामीटर्स

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

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

यह फंक्शन बूल टाइप मान लौटाता है, true या false।

यह true लौटाता है यदि T एब्स्ट्रैक्ट क्लास है, और false यदि T एब्स्ट्रैक्ट क्लास नहीं है।

उदाहरण 1

#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

उदाहरण 2

#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++ में String at() फंक्शन

    सारांश यह संक्षिप्त ट्यूटोरियल स्ट्रिंग से कैरेक्टर्स के अनुक्रम को एक्सेस करने के लिए C++ स्ट्रिंग क्लास at() फंक्शनैलिटी का अवलोकन है। आगामी सेक्शन में, एक इच्छुक पाठक स्ट्रिंग क्लास प्रोग्रामिंग उदाहरणों के माध्यम से at() फंक्शन्स के मैनिपुलेशन की पूरी समझ प्राप्त कर सकता है। स्ट्रिंग क्लास प्रोग

  1. - C++ में स्ट्रक्चर बनाम क्लास

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

  1. - C++ में लोकल क्लास (Local Class)

    लोकल क्लास क्या है? एक फ़ंक्शन के अंदर घोषित क्लास को लोकल क्लास कहते हैं क्योंकि यह उस फ़ंक्शन के लिए स्थानीय (local) होती है। बेसिक उदाहरण #include <iostream> using namespace std; void func() { class LocalClass { }; } int main() { return 0; } नियम और प्रतिबंध लोकल क्लास का नाम