Trong bài viết này, chúng ta sẽ thảo luận về cách làm việc, cú pháp và các ví dụ của mẫu std ::is_class trong C ++ STL.
Mẫu is_class được sử dụng để kiểm tra xem kiểu được xác định có phải là kiểu lớp không phải bất kỳ kiểu nào khác.
Lớp là gì?
Lớp là kiểu dữ liệu do người dùng xác định hoặc cấu trúc dữ liệu chứa một số thành viên dữ liệu hoặc hàm thành viên được khai báo với từ khóa 'class'.
Ví dụ
class abc { int data_members; void member_function(); };
Vì vậy, mẫu is_class kiểm tra xem kiểu T có phải là một lớp hay không và trả về giá trị Boolean true orfalse tương ứng.
Cú pháp
template <class T> is_class;
Tham số
Mẫu chỉ có thể có tham số kiểu T và kiểm tra xem kiểu đã cho có phải là lớp hay không.
Giá trị trả về
Nó trả về một giá trị Boolean, true nếu kiểu đã cho là một lớp và false nếu kiểu đã cho không phải là một lớp.
Ví dụ
Input: class abc { }; is_class<abc>::value; Output: True Input: union abc { }; is_class<abc>::value; Output: False
Ví dụ
#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; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
checking for is_class template: TP_1 class : true TP_2 union : false
Ví dụ
#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; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
checking for is_class template: TP_1 class : true TP_2 union : false TP_3 structure : true