Trong bài viết này, chúng ta sẽ thảo luận về cách làm việc, cú pháp và các ví dụ của mẫu std ::is_reference trong C ++ STL.
is_reference là một mẫu nằm trong tệp tiêu đề
Mẫu này là sự kết hợp của is_rvalue và is_lvalue và kiểm tra xem nếu một trong hai đúng, kết quả của is_reference cũng sẽ đúng.
Tham chiếu trong C ++ là gì?
Tham chiếu là một bí danh hoặc một tên khác của biến đã tồn tại. Tham chiếu khác với con trỏ -
- Vì chúng tôi không thể đặt một tham chiếu là null nhưng một con trỏ có thể là một con trỏ null.
- Sau khi một tham chiếu được khởi tạo cho một đối tượng, nó sẽ không thể thay đổi được. Con trỏ có thể được trỏ đến bất kỳ đối tượng nào khác bất kỳ lúc nào.
- Một tham chiếu phải được khởi tạo khi tạo, vì con trỏ có thể được khởi tạo sau này sau khi tạo.
Một tham chiếu có thể được khai báo bằng ký hiệu dấu và (&) đứng trước biến mà chúng ta muốn tham chiếu.
Cú pháp
template <class T> is_reference;
Tham số
Mẫu chỉ có thể có tham số kiểu T và kiểm tra xem kiểu đã cho có phải là kiểu tham chiếu hay không.
Giá trị trả về
Nó trả về giá trị Boolean, true nếu kiểu đã cho là kiểu tham chiếu và false nếu kiểu đã cho không phải là kiểu tham chiếu.
Ví dụ
Input: is_reference<int>::value; Output: False Input: is_reference<int&>::value; Output: True
Ví dụ
#include <iostream> #include <type_traits> using namespace std; class TP { }; int main() { cout << boolalpha; cout << "Checking for is_reference: "; cout << "\n class TP : "<<is_reference<TP>::value; cout << "\n class TP&: "<<is_polymorphic<TP&>::value; cout << "\n class TP&&: "<<is_polymorphic<TP&&>::value; return 0; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
Checking for is_reference: class TP : false class TP&: false class TP&&: false
Ví dụ
#include <iostream> #include <type_traits> using namespace std; int main() { cout << boolalpha; cout << "Checking for is_reference: "; cout << "\n int: "<<is_reference<int>::value; cout << "\n int&: "<< is_reference <int&>::value; cout << "\n int&&: "<< is_reference <int&&>::value; // char cout << "\n char: "<<is_reference<char>::value; cout << "\n char&: "<< is_reference <char&>::value; cout << "\n char&&: "<< is_reference <char&&>::value; //float cout << "\n float: "<<is_reference<float>::value; cout << "\n float&: "<< is_reference <float&>::value; cout << "\n float&&: "<< is_reference <float&&>::value; //double cout << "\n double: "<<is_reference<double>::value; cout << "\n double&: "<< is_reference <double&>::value; cout << "\n double&&: "<< is_reference <double&&>::value; return 0; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
Checking for is_reference: int: false int&: true int&&: true char: false char&: true char&&: true float: false float&: true float&&: true double: false double&: true double&&: true