在本文中,我们将讨论C ++ STL中std::is_final模板的工作,语法和示例。
is_final是位于<type_traits>头文件下的模板。该模板用于检查给定的类型T是否为最终类。
当我们用最终说明符声明一个类时,它被称为最终类。最终类是一种特殊的类,无法扩展以创建另一个类。在C ++中,将一个类作为最终对象,我们将一个类作为朋友,然后虚拟地继承该类,以使该类不可扩展。
class final_abc; //Class which is to be made final class abc { private: abc(){cout<<"abc constructor";} friend class final_abc; }; class final_abc : virtual abc //made it final class. { public: final_abc(){cout<<"Final class constructor";} }; class derive : public final_abc; //Error can't be extended
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
#include <iostream> #include <type_traits> using namespace std; class TP { //如果将是结构而不是类,则相同 }; class T_P final { //如果将是结构而不是类,则相同 }; int main() { cout << boolalpha; cout << "Using is_final"; cout << "\nnhooo.com: "<<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 nhooo.com: false T_P Final: true check for char: false
#include <iostream> #include <type_traits> using namespace std; 联盟 TP { //联盟 }; 联盟 T_P final { //联盟 }; int main() { cout << boolalpha; cout << "Using is_final"; cout << "\nnhooo.com: "<<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 nhooo.com: false T_P Final: true check for char: false