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

is_pointer เทมเพลตใน C++


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

is_ pointer เป็นเทมเพลตที่อยู่ภายใต้ไฟล์ส่วนหัว เทมเพลตนี้ใช้เพื่อตรวจสอบว่าประเภท T ที่กำหนดเป็นประเภทพอยน์เตอร์หรือไม่

พอยน์เตอร์คืออะไร

ตัวชี้เป็นประเภทที่ไม่คงที่ซึ่งมีที่อยู่ของประเภทอื่นหรืออีกนัยหนึ่งซึ่งชี้ไปยังตำแหน่งหน่วยความจำบางส่วนในพูลหน่วยความจำ ด้วยความช่วยเหลือของเครื่องหมายดอกจัน (*) เรากำหนดตัวชี้และเมื่อเราต้องการอ้างอิงหน่วยความจำเฉพาะที่ตัวชี้ถืออยู่ เราก็ใช้เครื่องหมายดอกจัน (*)

เป็นประเภทที่สามารถเริ่มต้นเป็น 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