나는이 시도하고 출력을 가지고 : 무효typeid() 함수를 전달하는 데 사용할 수 있습니까?
다음 코드를 설명해주십시오 :
#include <cstdio>
#include <typeinfo>
using namespace std ;
void foo()
{ }
int main(void)
{
printf("%s",
typeid(foo()).name());// Please notice this line, is it same as typeid().name() ?
return 0;
}
AFAIK : 유형 ID 연산자는 객체의 유형이 런타임에 결정 할 수 있습니다.
따라서이 샘플 코드는 void를 반환하는 함수가 ** 공백 ** 유형임을 나타냅니다. 함수가 메서드이고 형식이 없음을 의미합니다. 옳은?
+1 이미 올바른 응답에 약간의 명확성을 추가하기 위해'typeid (foo()) '표현식은 먼저'foo()'함수를 호출 한 다음' 'foo()'의 반환 값에'typeid'를 쓰면 무효가됩니다. –
@ John Dibling : 이것은 완전히 정확하지 않습니다. 이 함수는 호출되지 않습니다. 'typeid'는 다형 클래스 타입을 가지고있을 때만 표현식을 평가합니다. 다른 모든 경우 (이것을 포함하여)는'sizeof'와 유사합니다. 즉, 인수 표현식이 평가되지 않습니다. – AnT
아, 좋은 지적이야. –