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

ฟังก์ชัน is_trivial ใน C++

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

is_trivial เป็น template ใน header <type_traits> ใช้ตรวจสอบว่าชนิด T เป็น trivial class หรือไม่

Trivial Class Type ใน C++ คืออะไร?

เราเรียกชนิดว่า Trivial type เมื่อข้อมูลถูกเก็บในหน่วยความจำแบบติดต่อกัน (contiguous) และยอมรับเฉพาะ static default initialization เท่านั้น รวมถึงอาร์เรย์ ชนิดสเกลาร์ และคลาส

Trivial class คือคลาสที่ trivially default constructed และ trivially copyable ข้อควรระวังในการทำให้คลาสเป็น trivial:

  • ไม่มี virtual members หรือ virtual base class
  • ไม่มี non-static members
  • ไม่มี base class ที่มี non-static members

ไวยากรณ์

template <class T> is_trivial;

พารามิเตอร์

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

ค่าที่คืน

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

ตัวอย่าง

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

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

#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() {
    cout << boolalpha;
    cout << "TP_1: " << is_trivial<TP_1>::value << endl;
    cout << "TP_2: " << is_trivial<TP_2>::value << endl;
    cout << "TP_3: " << is_trivial<TP_3>::value << endl;
    cout << "TP_4: " << is_trivial<TP_4>::value << endl;
    return 0;
}

เอาต์พุต

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