저는 Scott Meyers의보다 효과적인 C++을 읽고 있습니다. 수정 중! 항목 2는 dynamic_cast가 다운 캐스트뿐만 아니라 형제 캐스트에도 사용될 수 있다고 언급합니다. 형제 자매를위한 (합리적으로) 인위적인 예를 제공 할 수 있습니까? 이 어리석은 시험은 0을 인쇄하지만, 그러한 변환을위한 응용 프로그램을 상상할 수는 없습니다.형제의 dynamic_cast의 유스 케이스는 무엇입니까?
#include <iostream>
using namespace std;
class B {
public:
virtual ~B() {}
};
class D1 : public B {};
class D2 : public B {};
int main() {
B* pb = new D1;
D2* pd2 = dynamic_cast<D2*>(pb);
cout << pd2 << endl;
}
: 당신이
C
객체에A
포인터가있는 경우에, 당신은 그C
개체에B
포인터를 얻을 수 있습니다'크로스 캐스트'를 검색합니다. 클래스가 두 개의 다른 클래스에서 상속 받았을 때 사용됩니다 (질문에서와 같이). –