Java의 Instanceof와 동일한 C: Dynamic_cast 및 대체 접근 방식
Java의 instanceof 연산자를 사용하면 객체가 특정 객체의 인스턴스인지 확인할 수 있습니다. 클래스 또는 그 하위 클래스. C에서는 Dynamic_cast를 사용하여 유사한 기능을 구현할 수 있습니다.
<code class="cpp">if (NewType* v = dynamic_cast<NewType*>(old)) { // Cast succeeded, old is a NewType object v->doSomething(); }</code>
이 접근 방식을 사용하려면 컴파일러에서 RTTI(런타임 유형 정보)를 활성화해야 합니다. 그러나 Dynamic_cast는 성능 저하를 가져올 수 있습니다.
대체 접근 방식:
<code class="cpp">switch (old->getType()) { case BOX: // old is a Box object break; case SPECIAL_BOX: // old is a SpecialBox object break; }</code>
이 접근 방식은 RTTI가 필요하지 않지만 다중 레벨 상속에는 적합하지 않습니다.
참고: 디자인 문제를 나타낼 수 있으므로 동적 유형 검사의 필요성을 고려하세요. 대부분의 경우 가상 함수나 열거형 접근 방식과 같은 대안이 더 나은 디자인과 성능을 제공할 수 있습니다.
위 내용은 C에서 Java의 `instanceof` 기능을 달성하는 방법: `dynamic_cast` 및 대안?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!