2009-08-21 3 views

답변

4

AFAIK 공식 정의가있는 곳이면 어디에도 나오는 용어가 아닙니다.

아마도 누군가가 simulated dynamic binding에 대해 이야기하고 있습니까?

편집 : 신속한 웹 검색은 누군가 자신의 동적 다형성을 구현했을 수 있으므로 자체 vtable을 가질 수 있음을 제안합니다. "가상 버츄얼"함수는 C++ 컴파일러가이를 이해할 때 실제로 가상 함수가 아닌 그 메커니즘을 통해 액세스되는 함수가됩니다.

이 작업을 수행하는 한 가지 이유는 multi-dispatch을 구현하는 것입니다.

우리에게 지적 할만한 문맥이 있습니까?

+0

예, 시뮬레이트 된 동적 바인딩과 관련된 것으로 보입니다. 컨텍스트는 3D 엔진에서 다중 스레드 애니메이션 및 메시 변형 시스템을 최적화하는 메커니즘이므로 의미가 있습니다. 고마워. –

0

선언이있는 가상 함수입니다.

class Foo 
{ 
    int* bar; 

    Foo() : bar(0) { bar = new int; } 
    virtual ~Foo() { delete bar; } 
} 

이것은 선언에서 무언가를하기 때문에 의사 가상 소멸자가 있습니다. 다음은 순수 가상 선언입니다.

class Foo 
{ 
    Foo() { } 
    virtual ~Foo()=0; 
} 

적어도이 방법을 배웠습니다.

(*multiMethod[ index ])() 

multiMethod 어레이 :

+0

예, 기억하고 거기에서 편집했습니다. – jkeys

+0

아마도 ** 정의 **를 의미합니다. 사용할 수있는 것은 선언이 있습니다. 또한 순수 가상 함수도 정의 할 수 있습니다. – Asik

+0

죄송합니다. 프로그래밍 언어를 설명하는 데 사용되는 용어가 완전히 모호하지 않아야한다는 사실을 항상 잊어 버립니다. 미안하지만, 나는 공식적인 훈련이 없다 (아직?). – jkeys

1

난 (이들은 대개 선택기 런타임 코드에 의해 결정된 오프셋 함수 포인터들의 어레이를 사용하여 구현된다 ++ C에서) multimethods를 참조하는 데에 용어를 들었다 함수 포인터의 배열입니다.

2

나는이 용어를 들어 본 적이 없습니다. 나는 그들이 Non-Virtual Interface idiom (NVI)에 대해 이야기하고 있거나 함수 포인터의 디스패치 테이블을 만드는 것에 대해 이야기하고있는 것으로 추측 할 수 있습니다.이 포인터는 C에서 다형성/가상 함수를 구현할 수있는 방법입니다 (사실 C++ 컴파일러가 어떻게 그것을 배후에서 수행하는지입니다).).

+0

질문을 읽을 때 NVI가 가장 먼저 떠오른 것입니다 .... – Dan