ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของเทมเพลต std::is_class ใน C++ STL
เทมเพลต is_class ใช้เพื่อตรวจสอบว่าประเภทที่กำหนดเป็นประเภทคลาส ไม่ใช่ประเภทอื่นหรือไม่
คลาสคืออะไร
คลาสคือประเภทข้อมูลที่ผู้ใช้กำหนดหรือโครงสร้างข้อมูลซึ่งมีสมาชิกข้อมูลบางส่วนหรือฟังก์ชันของสมาชิกซึ่งประกาศด้วยคีย์เวิร์ด 'คลาส'
ตัวอย่าง
class abc { int data_members; void member_function(); };
ดังนั้น is_class template จะตรวจสอบว่าประเภท T เป็นคลาส และส่งคืนค่าบูลีนเป็นค่าจริงหรือเท็จตามลำดับ
ไวยากรณ์
template <class T> is_class;
พารามิเตอร์
เทมเพลตมีได้เฉพาะพารามิเตอร์ประเภท T และตรวจสอบว่าประเภทที่กำหนดเป็นคลาสหรือไม่ใช่คลาส
คืนค่า
ส่งคืนค่าบูลีนเป็นค่าจริงหากประเภทที่กำหนดเป็นคลาส และเป็นเท็จหากประเภทที่กำหนดไม่ใช่คลาส
ตัวอย่าง
Input: class abc { }; is_class<abc>::value; Output: True Input: union abc { }; is_class<abc>::value; Output: False
ตัวอย่าง
#include <iostream> #include <type_traits> using namespace std; class TP_1 { }; union TP_2 { int var_1; float var_2; }; int main() { cout << boolalpha; cout << "checking for is_class template: "; cout << "\nTP_1 class : "<<is_class<TP_1>::value; cout << "\nTP_2 union : "<< is_class<TP_2>::value; return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
checking for is_class template: TP_1 class : true TP_2 union : false
ตัวอย่าง
#include <iostream> #include <type_traits> using namespace std; class TP_1 { int var_1; float var_2; char var_3; }; union TP_2 { int var_1; float var_2; char var_3; }; struct TP_3 { int var_1; float var_2; char var_3; }; int main() { cout << boolalpha; cout << "checking for is_class template: "; cout << "\nTP_1 class : "<<is_class<TP_1>::value; cout << "\nTP_2 union : "<< is_class<TP_2>::value; cout << "\nTP_3 structure : "<< is_class<TP_3>::value; return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
checking for is_class template: TP_1 class : true TP_2 union : false TP_3 structure : true