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
广告
数据结构
网络通信
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP