아무도 정확하게 동적 캐스팅은 C++에서 무엇을 의미하는지 말할 수 있습니다. 정확히이 동적 캐스팅을 사용할 수 있습니까? 이것은 인터뷰에서 나에게 질문을 받았는데 나는이 질문에 대해 공백으로 갔다. :)정확하게 C에서 동적 캐스팅은 무엇입니까
답변
런타임에 객체의 클래스를 찾을 첫번째 old answer
좋은 답변이지만 답변을 건너 뛰고 오른쪽에있는 두 번째 글 (litb) ... 첫번째와 달리 :/ –
@ 마티유 : 시간 고정, litb '답변이 먼저되었습니다. 어쨌든 힌트를 주셔서 감사합니다. – philant
Dynamic casting은 안전하게 런타임에 개체 인스턴스의 유형을 검색합니다.
이것은 잠재적으로 다소 클 수있는 참조 테이블을 생성하는 컴파일러에 의해 수행됩니다. 이러한 이유로 프로그래머가 기능을 사용하지 않는다는 것을 알게되면 컴파일하는 동안 자주 비활성화됩니다.
dynamic_cast는이 방법을 주조하는 검색을 사용해보십시오.
class Base
{
public:
virtual bool func1();
};
class Derived1 : Base
{
public:
virtual bool func1();
virtual bool funcDer1();
};
class Derived2 : Base
{
public:
virtual bool func1();
virtual bool funcDer2();
};
Base* pDer1 = new Derived1;
Base* pDer2 = new Derived2;
Derived2* pDerCasted = dynamic_cast<Derived2*>(pDer2);
if(pDerCasted)
{
pDerCasted->funcDer2();
}
-> We cannot call funcDer2 with pDer2 as it points to Base class
-> dynamic_cast converts the object to Derived2 footprint
-> in case it fails to do so, it returns NULL .(throws bad_cast in case of reference)
참고 : 일반적으로 Dynamic_cast는 OO 설계를 신중하게해야합니다.
Derived2 * pDerCasted ..를 의미한다고 생각하십니까? – lorenzog
예, Derived2. 나는 갱신했다. –
- 1. 동적 캐스팅은 어떻게 작동합니까?
- 2. 플로트 캐스팅은 1 씩 값을 줄입니다.
- 3. C에서 동적 메서드 호출 #
- 4. C에서 동적 배열 만들기 #
- 5. 후크 ... 정확하게 무엇입니까
- 6. C에서 동적 정수 유형 다루기?
- 7. 다운 캐스팅은 어떻게 작동합니까? C#을
- 8. 명시 적 캐스팅은 컴파일 오류를 생성하지 않습니다
- 9. C에서 과부하 및 동적 키워드
- 10. c에서 동적 배열에 포인터를 비움
- 11. JSON과 관련하여 정확하게 해시가 무엇입니까?
- 12. 정확하게 jcifs.smb.client.username 등록 정보가 무엇입니까?
- 13. C에서 동적 플러그인 기반 기능을 개발하는 방법
- 14. C에서 동적 크기 조정 스택을 구현하는 가장 좋은 방법은 무엇입니까?
- 15. Objective-C에서 동적 클래스에 대한 호출 방법은 무엇입니까?
- 16. 얼마나 정확하게 높이를 달성합니까?
- 17. C에서 동적 속성을 만들고 해시 테이블을 바인딩하십시오.
- 18. C에서 1 차원 동적 배열을 만드는 방법 #?
- 19. C에서 동적 3 차원으로 3d 배열 선언 #
- 20. 터치의 유효성을 정확하게 확인하십시오
- 21. 남은 (정확하게) 다운로드 시간을 예측하는 방법은 무엇입니까?
- 22. 정확하게 웹 API를 정의하는 기술 스택은 무엇입니까?
- 23. 내 DAL을 정확하게 단위 테스트하는 방법은 무엇입니까?
- 24. Graphics3D에서 카메라 방향을 정확하게 지정하는 방법은 무엇입니까?
- 25. c에서 비밀번호를 마스크하는 방법은 무엇입니까? C에서
- 26. 정확하게 RSS로 PHP를 표시
- 27. 이름을 정확하게 숫자로 정렬
- 28. 정확하게 VB6 제한에 액세스하십시오.
- 29. 내가 정확하게 SQLSERVER 테이블
- 30. Ruby가 정확하게 나누기를 거부합니다.
dup http://stackoverflow.com/questions/28002/regular-cast-vs-staticcast-vs-dynamiccast – Macke