ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของเทมเพลต std::is_trivial ใน C++ STL
is_trivial เป็นเทมเพลตที่อยู่ภายใต้ไฟล์ส่วนหัว
ประเภทคลาสไม่สำคัญใน C++ คืออะไร
เราเรียกประเภทว่าเป็นประเภท Trivial เมื่อข้อมูลถูกจัดเก็บในลักษณะต่อเนื่องกัน และยอมรับเฉพาะการเริ่มต้นเริ่มต้นแบบคงที่เท่านั้น โดยจะรวมอาร์เรย์ประเภท คลาส และประเภทสเกลาร์ได้ทุกประเภท
คลาส Trivial เป็นคลาสที่สร้างโดยค่าเริ่มต้นเล็กน้อยและสามารถคัดลอกได้เล็กน้อย มีบางประเด็นที่ควรได้รับการดูแลในขณะที่ทำให้ชั้นเรียนเป็นเรื่องเล็กน้อย -
- ต้องไม่มีสมาชิกเสมือนหรือคลาสฐานเสมือน
- ไม่มีสมาชิกที่ไม่คงที่
- ไม่มีคลาสเบสที่มีสมาชิกที่ไม่คงที่
ไวยากรณ์
template <class T> is_trivial;
พารามิเตอร์
เทมเพลตสามารถมีได้เฉพาะพารามิเตอร์ประเภท T และตรวจสอบว่าประเภทที่กำหนดเป็นคลาสประเภทไม่สำคัญหรือไม่
คืนค่า
ส่งคืนค่าบูลีนเป็นค่าจริงหากประเภทที่กำหนดเป็นประเภทคลาสเล็กน้อย และเป็นเท็จหากประเภทที่ระบุไม่ใช่ประเภทคลาสเล็กน้อย
ตัวอย่าง
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() {
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;
} ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
TP_1: true TP_2: false TP_3: false TP_4: false