2010-01-23 2 views
1

,이 책은 단지 기본 매개 변수는 정적 바인딩 왜 한 문장을 언급 :기본 매개 변수의 정적 바인딩 효과적인 C++에서

기본 매개 변수 값을 동적으로 결합 된 경우, 컴파일러는 적절한를 결정하는 방법을 마련 할 것 런타임시 가상 함수의 매개 변수에 대한 기본값. 컴파일 중에 현재 결정하는 메커니즘보다 느리고 복잡합니다.

누구나 좀 더 자세히 설명 할 수 있습니까? 왜 그것이 복잡하고 비효율적입니까?

감사합니다.

답변

2

클래스에 가상 함수가있을 때마다 컴파일러는 동적 바인딩 및 다형성 동작을 지원하기 위해 런타임에 필요한 적절한 주소를 계산하기 위해 소위 v 테이블을 생성합니다. 많은 클래스 최적화 도구가 이러한 이유로 가상 함수를 정확하게 제거하기 위해 노력합니다. 오버 헤드가 적고 코드가 작습니다. 기본 매개 변수도 방정식으로 계산하면 전체 가상 함수 메커니즘이 더 복잡해지고 비대화됩니다.

0

함수 호출의 경우 실제 호출은 객체 인스턴스와 관련된 vtable을 사용하여 조회해야하므로 deall을 어떤 방식으로 유추해야합니다. 즉, ctable에 확장이 필요하거나 vtable 항목에 기본값을 연결하려면 추가 관리가 필요합니다.

관련 문제