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