Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 is_reference 템플릿

<시간/>

이 기사에서는 C++ STL에서 std::is_reference 템플릿의 작동, 구문 및 예에 대해 논의할 것입니다.

is_reference는 헤더 파일 아래에 있는 템플릿입니다. 이 템플릿은 주어진 유형 T가 참조 유형인지 여부를 확인하는 데 사용됩니다.

이 템플릿은 is_rvalue와 is_lvalue의 조합으로 둘 중 하나가 참이면 is_reference의 결과도 참인지 확인합니다.

C++에서 참조란 무엇입니까?

참조는 이미 존재하는 변수의 별칭 또는 다른 이름입니다. 참조는 포인터와 다릅니다 -

  • 참조를 null로 설정할 수 없지만 포인터는 null 포인터가 될 수 있습니다.
  • 참조가 개체에 대해 초기화되면 변경할 수 없습니다. 포인터는 언제든지 다른 개체를 가리킬 수 있습니다.
  • 참조는 생성 시 초기화되어야 하며 포인터는 생성 후 나중에 초기화될 수 있습니다.

참조하려는 변수 앞에 앰퍼샌드(&) 기호를 사용하여 참조를 선언할 수 있습니다.

구문

template <class T> is_reference;

매개변수

템플릿은 T 타입의 파라미터만 가질 수 있으며, 주어진 타입이 참조 타입인지 확인합니다.

반환 값

Boolean 값을 반환하고, 주어진 유형이 참조 유형이면 true를 반환하고, 참조 유형이 아니면 false를 반환합니다.

예시

Input: is_reference<int>::value;
Output: False

Input: is_reference<int&>::value;
Output: True

예시

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

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Checking for is_reference:
class TP : false
class TP&: false
class TP&&: false

예시

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

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

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