age()라는 가상 함수가 포함 된 Person 클래스가 있다고 가정 해 보겠습니다. 언어 의미론에 따라 vtable은 객체별로가 아니라 클래스 단위입니다. VPTR은 오브젝트마다 있고 vtable을 가리 킵니다.vtable의 가상 함수 주소
질문 :이 프로그램을 빌드하는 경우
()가 (주이 존재 말할 수) : VTABLE 수
VTABLE가 생성됩니다 즉 승 존재로 제공 /도 하나의 객체를 생성 오 ?
컴파일러에서 age()에 대해 vtable에 두는 주소는 메모리에있는 일부 정적 주소의 일종입니까?
또는 컴파일러가 age()에 대한 주소를 얻기 위해 내부적으로 개체를 만듭니다 (age()는 개체가 생성 될 때만 존재할 수있는 일부 데이터 멤버에서 작동하기 때문에) 이것 뒤에 다른 마술? 다음과 같이 나의 이해 당으로
- 예
- 예
- 하지 내가 위의 프로그램에서 "나노"를 실행 시도
단지 내가 vtable을 알아낼 수 있는지 알기 위해, 그러나 운 없음. 그렇게 할 방법이 있습니까?
좋습니다.
모두 구현에 따라 다르므로 실제 답변을 원하면 사용하는 컴파일러를 지정해야합니다. –
* 언어별로 * 가상 테이블 * 또는 * 가상 테이블 포인터 *를 언급하지 않고 가상 테이블 (모든 현재 컴파일러에서와 같이) 또는 임의의 가상 테이블로 구현할 수있는 연산의 의미 다른 접근 –
감사합니다 @EtiennedeMartel –