> 백엔드 개발 > C++ > C에서 런타임에 개체 유형을 어떻게 확인할 수 있습니까?

C에서 런타임에 개체 유형을 어떻게 확인할 수 있습니까?

Patricia Arquette
풀어 주다: 2024-12-13 19:50:16
원래의
357명이 탐색했습니다.

How Can I Determine an Object's Type at Runtime in C  ?

C에서 객체 유형 찾기

dynamic_cast를 사용하여 객체 유형을 확인할 수 있습니다. 이 방법은 한 포인터 또는 참조 유형에서 다른 포인터 또는 참조 유형으로 데이터를 동적으로 캐스팅하여 런타임에 캐스팅의 유효성을 확인합니다.

사용법:

포인터 유형으로 캐스팅하려면:

TYPE* dynamic_cast<TYPE*>(object);
로그인 후 복사

참조로 캐스팅하려면 유형:

TYPE& dynamic_cast<TYPE&>(object);
로그인 후 복사

결과:

  • 캐스트가 성공하고 객체가 원하는 유형인 경우 결과는 다음에 대한 포인터 또는 참조입니다.
  • 캐스트가 실패하면(객체가 원하는 유형이 아님) 포인터 캐스팅에 대한 결과는 NULL이고 참조 캐스트에 대한 bad_cast 예외.

런타임 유형 정보(RTTI)

Dynamic_cast는 RTTI를 사용하며 이는 다형성 클래스(즉, 하나 이상의 가상 메서드가 있는 클래스) 실제로 대부분의 기본 클래스에는 파생 클래스의 적절한 정리를 위한 가상 소멸자가 있으므로 이는 큰 제한 사항이 아닙니다.

예:

다음은 다음을 사용하는 예입니다. 객체가 B 유형인지 확인하는 동적_캐스트:

class A {};
class B : public A {
public:
    void b_function() {}
};

void func(A& obj) {
    B* b_ptr = dynamic_cast<B*>(&obj);
    if (b_ptr != nullptr) {
        b_ptr->b_function(); // Object is of type B
    } else {
        std::cout << "Object is not of type B" << std::endl;
    }
}
로그인 후 복사

위 내용은 C에서 런타임에 개체 유형을 어떻게 확인할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿