컴파일러가 특정 조건에서 사용할 메소드의 정확한 구현을 결정할 수 없다는 이야기를 자주 듣습니다. Fox 예제에서 우리는 자식 클래스에서 재정의 된 foo() 메소드를 가진 부모 클래스의 경우 컴파일러가 런타임까지 호출 할 foo()의 구현을하지 않을 시나리오를 상상할 수 있습니다. 따라서 동적 디스패치, vtable 등의 개념이 있습니다.정확히 왜 컴파일러는 런타임까지 변수의 실제 유형을 결정할 수 없습니까?
제 질문은 정확히 입니다.은 호출 할 정확한 구현을 컴파일러에서 결정할 수없는 이유는 무엇입니까? 나는 최근에 그것에 대해 생각하기 위해 멈춰 섰다. 그리고 나는 그것을 정당화하려고 열심히 노력했다. 아마도 나는 정말 실종 된 뭔가가 있습니다 (나는 대답을 듣고 나 자신을 때릴 것입니다). 그것은 외부 상황에 이르기까지입니까? 그렇다면 정확히 어떻게 재생 될까요?
이 문제는 언어에 따른 제한입니까 아니면 더 근본적인 무언가입니까?
을 식의 형태는 항상 컴파일시 알려진. 당신이 확신 할 수없는 것을 보여주는 몇 가지 코드가 있습니까? –
글쎄, 동적 다형성 지원의 전체적인 개념 **은 런타임에 타입 탐지/주입을 가능하게하기 위해 만들어졌습니다. –
첫 번째 문장을 편집했습니다. 아마 이제는 더 명확 해 졌을까요? 그리고 네, 저는 C++로 이것을 보았습니다. 이것은 정적 형식의 기능입니까? – Boon