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

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


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