ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของเทมเพลต std::is_pointer ใน C++ STL
is_ pointer เป็นเทมเพลตที่อยู่ภายใต้ไฟล์ส่วนหัว
พอยน์เตอร์คืออะไร
ตัวชี้เป็นประเภทที่ไม่คงที่ซึ่งมีที่อยู่ของประเภทอื่นหรืออีกนัยหนึ่งซึ่งชี้ไปยังตำแหน่งหน่วยความจำบางส่วนในพูลหน่วยความจำ ด้วยความช่วยเหลือของเครื่องหมายดอกจัน (*) เรากำหนดตัวชี้และเมื่อเราต้องการอ้างอิงหน่วยความจำเฉพาะที่ตัวชี้ถืออยู่ เราก็ใช้เครื่องหมายดอกจัน (*)
เป็นประเภทที่สามารถเริ่มต้นเป็น null และสามารถเปลี่ยนประเภทได้ในภายหลังตามความต้องการ
ไวยากรณ์
template <class T> is_pod;
พารามิเตอร์
เทมเพลตสามารถมีได้เฉพาะพารามิเตอร์ประเภท T และตรวจสอบว่าประเภทที่กำหนดเป็น Pointeror ไม่ใช่หรือไม่
คืนค่า
ส่งคืนค่าบูลีนเป็นค่าจริงหากประเภทที่กำหนดเป็นตัวแปรตัวชี้และเป็นเท็จหากประเภทที่กำหนดไม่ใช่ตัวชี้
ตัวอย่าง
Input: is_pointer<int>::value; Output: False Input: is_pointer<int*>::value; Output: True
ตัวอย่าง
#include <iostream> #include <type_traits> using namespace std; class TP{ }; int main() { cout << boolalpha; cout << "checking for is_pointer:"; cout << "\nTP: " << is_pointer<TP>::value; cout << "\nTP*: " << is_pointer<TP*>::value; cout << "\nTP&: " << is_pointer<TP&>::value; cout << "\nNull Pointer: "<< is_pointer<nullptr_t>::value; return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
checking for is_pointer: TP: false TP*: true TP&: false Null Pointer: false
ตัวอย่าง
#include <iostream> #include <type_traits> using namespace std; int main() { cout << boolalpha; cout << "checking for is_pointer:"; cout << "\nint: " << is_pointer<int>::value; cout << "\nint*: " << is_pointer<int*>::value; cout << "\nint **: " << is_pointer<int **>::value; cout << "\nint ***: "<< is_pointer<int ***>::value; return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
checking for is_pointer: int: false int*: true Int **: true Int ***: true