ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของเทมเพลต 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