C ++中的is_final模板

在本文中,我们将讨论C ++ STL中std::is_final模板的工作,语法和示例。

is_final是位于<type_traits>头文件下的模板。该模板用于检查给定的类型T是否为最终类。

C ++中的最终课程是什么?

当我们用最终说明符声明一个类时,它被称为最终类。最终类是一种特殊的类,无法扩展以创建另一个类。在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