Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Template is_pointer trong C++


Trong bài viết này, ta sẽ thảo luận về hoạt động, cú pháp và ví dụ của template std::is_pointer trong C++ STL.

is_pointer là một template nằm trong header <type_traits>. Template này dùng để kiểm tra xem kiểu T có phải là kiểu con trỏ hay không.

Con trỏ là gì?

Con trỏ là kiểu không tĩnh (non-static) chứa địa chỉ của kiểu khác, hoặc trỏ đến vị trí bộ nhớ nào đó. Dùng dấu * để khai báo con trỏ và khi muốn truy cập giá trị tại địa chỉ con trỏ giữ cũng dùng *.

Chúng có thể khởi tạo là null và sau đó thay đổi kiểu theo nhu cầu.

Cú pháp

template <class T> is_pointer;

Tham số

Template chỉ có tham số kiểu T, kiểm tra xem T có phải con trỏ hay không.

Giá trị trả về

Trả về giá trị boolean: true nếu T là kiểu con trỏ, false nếu không.

Ví dụ

Input: is_pointer<int>::value; Output: False
Input: is_pointer<int*>::value; Output: True

Ví dụ

#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; }

Đầu ra

Nếu chạy mã trên sẽ cho kết quả:

checking for is_pointer: TP: false TP*: true TP&: false Null Pointer: false

Ví dụ

#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; }

Đầu ra

Nếu chạy mã trên sẽ cho kết quả:

checking for is_pointer: int: false int*: true Int **: true Int ***: true