Computer >> Máy Tính >  >> Lập trình >> C ++

Mẫu is_reference trong C ++

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 được sử dụng để kiểm tra xem kiểu T đã cho có phải là kiểu tham chiếu hay không.

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