ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของเทมเพลต std::is_final ใน C++ STL
is_final เป็นเทมเพลตที่อยู่ภายใต้ไฟล์ส่วนหัว
คลาสสุดท้ายใน 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 และตรวจสอบว่าประเภทที่กำหนดเป็นประเภทคลาสสุดท้ายหรือไม่
คืนค่า
ส่งคืนค่าบูลีนเป็นค่าจริงหากประเภทที่กำหนดเป็นคลาสสุดท้าย และเป็นเท็จหากประเภทที่กำหนดไม่ใช่คลาสสุดท้าย
ตัวอย่าง
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