C++에서 typeid란?

C Eseo Typeidlan



C++ 사용자에게 광범위한 응용 프로그램을 제공하는 강력한 프로그래밍 언어입니다. C++ 프로그래밍 언어의 중요한 측면은 런타임 유형 식별을 지원하는 기능입니다. 그만큼 타이피드 C++ 프로그램에서 널리 사용되는 런타임 유형 식별 중 하나입니다.

당신이 무엇을 모른다면 타이피드 이 문서의 지침을 따르십시오.







C++의 typeid 연산자

그만큼 타이피드 사용자가 런타임에 변수의 데이터 유형을 결정할 수 있도록 하는 C++ 프로그래밍 언어의 기본 제공 연산자입니다. 반환 값 타이피드 유형이다 '타입 정보 ', 개체 유형에 대한 다양한 세부 정보를 제공합니다. 프로그램이 사용 중인 데이터 유형에 따라 여러 작업을 수행해야 하는 경우에 중요합니다.



typeid 구문



구문 타이피드 C++의 연산자는 다음과 같습니다.





타이피드 ( 유형 )

또는:



타이피드 ( 경험치 )

그만큼 타이피드 C++의 연산자는 이 두 매개변수 중 하나를 허용합니다.

유형 : 변수나 객체의 런타임 유형을 알아야 할 때 내부에 type 인수를 제공합니다. 타이피드 운영자. 이 경우 type 인수만 필요하며 런타임 유형 정보는 추가 평가 또는 사전 계산 없이 수집됩니다.

표현 : 표현식의 런타임 유형에 대한 세부 정보가 필요할 때 표현식 매개변수는 타이피드 운영자. 런타임 유형에 대한 정보는 이 매개변수의 표현식이 평가된 후에 가져옵니다.

와 함께 사용할 때 타이피드 , 식별자에 해당하는 유형에 대한 정보를 제공합니다. 식과 함께 사용하면 객체의 동적 유형에 대한 정보를 제공합니다.

typeid 연산자의 사용

그만큼 타이피드 연산자는 이러한 방식으로 사용할 수 있습니다.

1: 피연산자가 객체의 변수 역할을 하는 경우

그만큼 타이피드 연산자는 개체의 변수로 작동할 때 피연산자에 사용할 수 있습니다.

#include
#include <유형 정보>
네임스페이스 표준 사용;

정수 메인 ( ) {
정수 i;
숯불;
플로트 fl;
더블디비;

const type_info & type_i = 유형 ID ( ) ;
const type_info & type_ch = 유형 ID ( 채널 ) ;
const type_info & type_fl = 유형 ID ( ~에 ) ;
const type_info & type_db = 유형 ID ( DB ) ;

쿠우트 << 'int i의 유형:' << type_i.이름 ( ) ;
쿠우트 << ' \N 문자 유형 ch는 다음과 같습니다. ' << type_ch.name ( ) ;
쿠우트 << ' \N 플로트 fl의 유형은 다음과 같습니다. ' << type_fl.name ( ) ;
쿠우트 << ' \N 이중 db의 유형은 다음과 같습니다. ' << type_db.name ( ) << ' \N ' ;

반품 0 ;
}

위의 코드에서 각각 별도의 데이터 유형인 네 가지 변수를 선언합니다. 그런 다음 타이피드 이러한 변수에 연산자를 사용하고 cout 문을 사용하여 해당 데이터 유형을 인쇄합니다.

산출

2: 피연산자가 표현식인 경우

그만큼 타이피드 연산자는 피연산자가 표현식으로 취급되는 곳에서도 사용할 수 있습니다.

#include
#include <유형 정보>
네임스페이스 표준 사용;

정수 메인 ( ) {
정수 i = 7 ;
문자 채널 = 'ㅏ' ;
플로트 fl = 42.4 ;
더블 db = 4,279 ;

const type_info & type_a = 유형 ID ( i+ch ) ;
const type_info & type_b = 유형 ID ( * ~에 ) ;
const type_info & type_c = 유형 ID ( DB * ~에 ) ;
const type_info & type_d = 유형 ID ( i+db ) ;

쿠우트 << '표현 i+ch : ' << type_a.이름 ( ) ;
쿠우트 << ' \N 표현 i*fl : ' << type_b.name ( ) ;
쿠우트 << ' \N 표현식 db*fl : ' << type_c.name ( ) ;
쿠우트 << ' \N 식 i+db : ' << type_d.name ( ) ;
반품 0 ;
}

위의 코드에서 서로 다른 데이터 유형의 변수 4개를 초기화합니다. 그런 다음 일부 표현식을 평가하고 C++를 사용하여 유형을 계산합니다. 타이피드 () 운영자.

산출

C++에서 typeid의 장단점

그만큼 타이피드 런타임까지 알려지지 않은 개체와 함께 작동하는 코드를 작성할 때 유용합니다. 예를 들어 함수가 void 포인터를 매개 변수로 사용한다고 가정합니다. 그것은 사용할 수 있습니다 타이피드 포인터가 int인지 double인지 결정하기 위해 함수 작동 방식에 상당한 영향을 미칠 수 있습니다.

유형 이름 외에도 ' 유형 정보 ” 개체는 유형에 대한 다양한 기타 세부 정보도 제공합니다. 여기에는 다음이 포함됩니다.

  • 유형이 기본 유형, 포인터 유형 또는 사용자 정의 유형인지 여부.
  • 유형이 'const' 또는 'volatile'인지 여부입니다.
  • 유형이 클래스 유형인지, 그렇다면 다형성인지 여부.
  • 유형이 배열 유형인지 여부 및 그렇다면 차원은 무엇입니까?
  • 유형이 참조 유형인지 여부입니다.

그만큼 타이피드 가변 개수의 인수를 사용하는 템플릿 및 함수를 처리할 때도 유용합니다. '를 사용하여 타이피드 ” 연산자를 사용하면 사용할 올바른 템플릿이나 함수를 선택하는 등 런타임에 유형별 작업을 수행할 수 있습니다.

한 가지 가능한 단점 타이피드 다소 느리다는 것입니다. 일반적으로 런타임 중에 객체의 유형을 검사하기 때문에 템플릿 매개변수 또는 컴파일 타임 유형 검사와 같은 다른 유형의 유형 검사보다 느립니다.

결론

타이피드 C++의 ” 연산자는 변수 또는 개체의 데이터 유형에 대한 유용한 정보를 제공합니다. 이를 통해 프로그래머는 런타임에 유형별 작업을 수행할 수 있으며 피연산자가 변수로 작동하거나 피연산자가 식일 때 사용할 수 있습니다.