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

Template is_class ใน C++

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

is_class template ใช้ตรวจสอบว่าชนิดที่กำหนดเป็น class type หรือไม่ใช่ชนิดอื่น

Class คืออะไร?

Class เป็นชนิดข้อมูลที่ผู้ใช้นิยามเอง หรือโครงสร้างข้อมูลที่มี data members หรือ member functions ประกาศด้วย keyword class

class abc {
    int data_members;
    void member_function();
};

is_class template ตรวจสอบว่า T เป็น class คืนค่า Boolean true หรือ false

ไวยากรณ์

template <class T> is_class;

พารามิเตอร์

Template รับพารามิเตอร์ชนิด T เพียงอย่างเดียว ตรวจสอบว่าเป็น class หรือไม่

ค่าที่คืน

คืนค่า Boolean: true หากเป็น class, false หากไม่ใช่

ตัวอย่าง

Input: class abc { }; is_class<abc>::value; Output: true
Input: union abc { }; is_class<abc>::value; Output: false

ตัวอย่างโค้ด 1

#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

ตัวอย่างโค้ด 2

#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

หมายเหตุ

is_class คืนค่า true สำหรับทั้ง class และ struct แต่คืน false สำหรับ union