Computer >> Máy Tính >  >> Lập trình >> C ++

hàm is_trivial trong C ++

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_trivial trong C ++ STL.

is_trivial là một mẫu nằm trong tệp tiêu đề . Mẫu này được sử dụng để kiểm tra xem loại T đã cho có phải là một lớp tầm thường hay không

Loại lớp tầm thường trong C ++ là gì?

Chúng ta nói rằng một kiểu là kiểu Trivial, khi dữ liệu của nó được lưu trữ theo cách liền kề và chỉ chấp nhận khởi tạo mặc định tĩnh. Nó có thể bao gồm các mảng thuộc bất kỳ kiểu nào, các lớp và kiểu vô hướng.

Lớp tầm thường là một lớp được xây dựng mặc định tầm thường và có thể sao chép tầm thường. Có một số điểm cần được lưu ý khi tạo một lớp là tầm thường -

  • Nó không được có thành viên ảo hoặc lớp cơ sở ảo.
  • Không có thành viên không cố định.
  • Không có lớp Cơ sở với các thành viên không tĩnh

Cú pháp

template <class T> is_trivial;

Tham số

Mẫu chỉ có thể có các tham số kiểu T và kiểm tra xem kiểu đã cho có phải là lớp kiểu tầm thường hay không.

Giá trị trả về

Nó trả về giá trị Boolean, true nếu kiểu đã cho là kiểu lớp tầm thường và false nếu kiểu đã cho không phải là kiểu lớp tầm thường.

Ví dụ

Input: class A {};
   class B { B() {} };
   class D { virtual void fn() {} };
   cout<<”A: ”<<is_trivial<A>;
   cout<<”B: ”<<is_trivial<B>;
   cout<<”D: ”<<is_trivial<D>;
Output:
A: True
B: False
D: False

Ví dụ

#include <iostream>
#include <type_traits>
using namespace std;
class TP_1 {
};
class TP_2 {
   TP_2(){
   }
};
class TP_3 : TP_2 {
};
class TP_4 {
   virtual void dummy() {
   }
};
int main() {
   std::cout << std::boolalpha; //Returns value in boolean type
   std::cout << "TP_1: " << std::is_trivial<TP_1>::value << endl;
   std::cout << "TP_2: " << std::is_trivial<TP_2>::value << endl;
   std::cout << "TP_3: " << std::is_trivial<TP_3>::value << endl;
   std::cout << "TP_4: " << std::is_trivial<TP_4>::value << endl;
   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 -

TP_1: true
TP_2: false
TP_3: false
TP_4: false