[C++] Virtual Function에 Access

CS/C/C++ 2009. 11. 6. 21:13
WebKit Source에 보면
void* vptr() { return * reinterpret_cast<void**>(this); }
요런 함수가 정의되어 있다. 그림으로 나타내 보면,



결국 vptr()을 통해서 해당 virtual function에 직접 access 가능 하다.

실제 사용은,
// ...
if (value.isCell() && (value.asCell()->vptr() == globaData.jsFunctionVPtr)
// ...
struct VPtrSet {
    VPtrSet();
    
    void* jsArrayVPtr;
    void* jsByteArrayVPtr;
    void* jsStringVPtr;
    void* jsFunctionVPtr;
};
요렇게 쓰인다.
: