컴파일 f이 작동하지만 g을 컴파일하면 오류가 발생하여 실패합니다.static_cast 없이는 실패하는 이유는 무엇입니까?
왜 이런 일이 발생합니까?
class A {
public:
A() {}
};
class B : public A {
public:
B() {}
};
void f() {
A* a = new A();
B* b = static_cast<B*>(a);
}
void g() {
A* a = new A();
B* b = a;
}
잠시만 기다려주세요 ... 여기에 질문을 게시했습니다. http://stackoverflow.com/questions/2483227/why-the-function-from-immediate-parent-is-called-and-not-from-grandparent -class 10 minutes ago .... .... 아무도 응답하지 않으면, 똑같은 것을 다시 게시하지 마라. 닫기 투표! – t0mm13b
@ Tommieb75 : 이 두 가지는 서로 다른 질문입니다. 내가 두 개의 다른 Q를 올렸습니다. 의도하지 않은 중복이있는 경우. – sandeep
'static_cast '는 컴파일러에게 "나를 믿어 라, 나는 이것이 실제로 B *임을 안다."라고 말한다. 이 상황에서 컴파일러가 거짓말을한다는 의미입니다. – Bill