C++ 中的 is_final 模板


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

is_final 是一个模板,它属于 <type_traits> 头文件。此模板用于检查给定类型 T 是否为最终类型。

什么是 C++ 中的最终类型?

当我们使用 final 标识符声明一个类型时,它被称为最终类型。最终类型是一种特殊的类型,不能被扩展以创建其他类型。在 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 {
   //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

示例

 动态演示

#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

更新于: 2020 年 3 月 23 日

146 次浏览

开启你的 职业生涯

完成课程并获得认证

开始学习
广告
© . All rights reserved.