Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เทมเพลต is_final ใน C++


ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของเทมเพลต std::is_final ใน C++ STL

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

คืนค่า

ส่งคืนค่าบูลีนเป็นค่าจริงหากประเภทที่กำหนดเป็นคลาสสุดท้าย และเป็นเท็จหากประเภทที่กำหนดไม่ใช่คลาสสุดท้าย

ตัวอย่าง

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