इस लेख में हम 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