ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของเทมเพลต 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