C++ 변수 유형 가져오기

Namita Chaudhary 2023년10월12일
  1. C++ 변수 유형 가져오기
  2. typeid 연산자를 사용하여 C++에서 변수 유형 찾기
  3. decltype() 지정자를 사용하여 C++에서 변수 유형 찾기
  4. 결론
C++ 변수 유형 가져오기

이 기사에서는 표준 C++에서 변수의 데이터 유형을 찾는 다양한 방법을 살펴봅니다.

C++ 변수 유형 가져오기

C++에서 변수의 런타임에 동적 유형 또는 유형을 찾아야 하는 시나리오가 있습니다. 따라서 C++ 라이브러리는 변수 유형을 찾는 다양한 방법을 제공합니다.

방법 중 하나는 C++의 <typeinfo> 라이브러리에 있는 typeid 연산자를 사용하는 것입니다. 그러나 다른 하나는 표현식을 생성된 결과 유형으로 변환하는 decltype(x)으로 알려진 C++11에 도입되었습니다.

이전 버전의 C++에서 각 데이터 유형은 컴파일 타임에 명시적으로 선언되어야 합니다. 그러나 최신 버전에는 형식 유추라고 하는 식의 데이터 형식을 자동으로 추론하는 기능이 있습니다. decltype() 연산자는 표현식에서 데이터 유형의 자동 추론 기능도 제공합니다.

그러나 우리는 이 기사에서 각 방법에 대해 자세히 논의할 것입니다.

typeid 연산자를 사용하여 C++에서 변수 유형 찾기

typeid 연산자는 C++의 <typeinfo> 라이브러리에 있으며 런타임에 제공되는 변수 유형을 찾는 데 사용됩니다. 그러나 변수 유형을 찾는 데 사용되는 완전한 함수는 typeid(x).name()입니다. 여기서 x는 유형을 찾아야 하는 변수입니다.

사용된 name() 멤버 함수는 변수 유형을 식별하는 문자 시퀀스를 반환합니다.

그러나 데이터 유형의 이니셜을 출력으로 반환합니다. 예를 들어 int의 경우 i, float f, double의 경우 d가 유형으로 반환됩니다.

C++에서 typeid 연산자를 사용하여 변수 유형을 찾는 코드를 살펴보겠습니다.

#include <iostream>
#include <typeinfo>
using namespace std;

int main() {
  int x = 200;
  float y = 200.790;
  cout << typeid(x).name() << endl;
  cout << typeid(y).name() << endl;
  cout << typeid(x * y).name() << endl;
  return 0;
}

출력:

i
f
f

위의 출력은 iinteger 유형을 참조하는 반면 ffloat 유형을 참조한다는 것을 보여줍니다. 또한 C++의 typeid는 표현식의 유형을 반환하는 데에도 사용됩니다.

위의 예에서 typeid 연산자에 전달된 표현식은 intfloat라는 두 가지 다른 데이터 유형의 곱입니다. 따라서 결과는 더 큰 데이터 유형으로 변환됩니다.

decltype() 지정자를 사용하여 C++에서 변수 유형 찾기

decltype(x) 지정자는 C++11에서 도입되었습니다. 결과 표현식의 유형을 가져오는 데 사용되는 연산자입니다.

auto 키워드는 특정 유형의 변수를 선언하는 데 사용되는 반면 decltype은 해당 변수 유형을 추출합니다. autodecltype은 데이터 유형의 자동 추론을 참조하는 유형 추론을 기반으로 합니다.

C++에서 변수 유형을 찾기 위해 decltype 연산자를 사용하는 예를 살펴보겠습니다.

#include <bits/stdc++.h>

#include <cstring>
using namespace std;

float function1() { return 4.5; }
int function2() { return 34; }
int main() {
  decltype(function1()) a;
  decltype(function2()) b;

  cout << typeid(a).name() << endl;
  cout << typeid(b).name() << endl;

  return 0;
}

출력:

f
i

위의 예에서 변수 ab의 데이터 유형은 function1function2의 반환 유형과 동일합니다.

decltype 연산자의 또 다른 예는 다음과 같습니다. 여기에서 C++에서 표현식의 유형을 추출합니다.

#include <bits/stdc++.h>
using namespace std;

int main() {
  float ft = 4.8;
  decltype(ft) a = ft + 9.8;
  cout << typeid(a).name();
  return 0;
}

출력:

f

출력 ffloat 데이터 유형을 나타냅니다. 따라서 ft+9.8 표현식을 추가한 후 결과 데이터 유형은 float가 됩니다.

그러나 typeiddecltype 연산자의 주요 차이점은 typeid는 런타임에 유형에 대한 정보를 제공하는 반면 decltype은 컴파일 시간에 유형 정보를 제공한다는 것입니다.

결론

이 기사에서는 C++에서 변수 유형을 가져오는 방법에 대해 논의했습니다. 우리는 두 가지 다른 방법에 대해 논의했습니다. 하나는 런타임에 유형을 제공하는 typeid(x).name()을 사용하는 것이고, 다른 하나는 컴파일 시간에 유형을 제공하는 decltype(x)을 사용하는 것입니다.

그러나 이 두 가지 방법 모두 효율적이고 사용하기 쉽습니다.

관련 문장 - C++ Type