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

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

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

is_final एक टेम्पलेट है जो <type_traits> हेडर फाइल के अंतर्गत आता है। यह टेम्पलेट जांचता है कि दिया गया टाइप T एक फाइनल क्लास है या नहीं।

C++ में फाइनल क्लास क्या है?

जब हम फाइनल स्पेसिफायर के साथ क्लास घोषित करते हैं तो इसे फाइनल क्लास कहा जाता है। फाइनल क्लास एक विशेष प्रकार की क्लास है जिसे दूसरी क्लास बनाने के लिए एक्सटेंड नहीं किया जा सकता। C++ में किसी क्लास को फाइनल बनाने के लिए हम क्लास को फ्रेंड बनाते हैं और फिर वर्चुअली उस क्लास को इनहेरिट करते हैं, ताकि उस क्लास को नॉन-एक्सटेंडेबल बनाया जा सके।

फाइनल क्लास का उदाहरण

class final_abc; // क्लास जिसे फाइनल बनाना है
class abc {
    private:
    abc(){cout<<"abc constructor";}
    friend class final_abc;
};
class final_abc : virtual abc // इसे फाइनल क्लास बनाया
{
    public:
    final_abc(){cout<<"Final class constructor";}
};
class derive : public final_abc; // एरर: एक्सटेंड नहीं किया जा सकता

सिंटैक्स

template <class T> is_final;

पैरामीटर्स

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

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

यह एक बूलियन मान लौटाता है, यदि दिया गया टाइप फाइनल क्लास है तो true, और यदि दिया गया टाइप फाइनल क्लास नहीं है तो false।

उदाहरण

Input: class final_abc; class abc { friend class final_abc; }; class final_abc : virtual abc{ }; is_final<abc>::value; Output: False
Input: class final_abc; class abc { friend class final_abc; }; class final_abc : virtual abc{ }; is_final<final_abc>::value; Output: True

उदाहरण 1

#include <iostream>
#include <type_traits>
using namespace std;

class TP {
    // Same if it will be a structure instead of a class
};
class T_P final {
    // Same if it will be a structure instead of a class
};

int main() {
    cout << boolalpha;
    cout << "Using is_final";
    cout << "\nTutorials Point: " << is_final<TP>::value;
    cout << "\nT_P Final: " << is_final<T_P>::value;
    cout << "\ncheck for char: " << is_final<int>::value;
    return 0;
}

आउटपुट

Using is_final
Tutorials Point: false
T_P Final: true
check for char: false

उदाहरण 2

#include <iostream>
#include <type_traits>
using namespace std;

union TP {
    // Union
};
union T_P final {
    // Union
};

int main() {
    cout << boolalpha;
    cout << "Using is_final";
    cout << "\nTutorials Point: " << is_final<TP>::value;
    cout << "\nT_P Final: " << is_final<T_P>::value;
    cout << "\ncheck for char: " << is_final<int>::value;
    return 0;
}

आउटपुट

Using is_final
Tutorials Point: false
T_P Final: true
check for char: false
  1. - C++ में फाइनल क्लास का अनुकरण (Simulating Final Class)

    जावा या C# में, हम फाइनल क्लासेज का उपयोग कर सकते हैं। फाइनल क्लास एक विशेष प्रकार की क्लास होती है। हम उस क्लास को एक्सटेंड करके दूसरी क्लास नहीं बना सकते। C++ में ऐसा कोई सीधा तरीका नहीं है। यहां हम देखेंगे कि C++ में फाइनल क्लास का अनुकरण कैसे करें। यहां हम एक अतिरिक्त क्लास MakeFinalClass बनाए

  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; } नियम और प्रतिबंध लोकल क्लास का नाम