1. 程式人生 > >C++ 虛擬函式表是屬於類的還是屬於物件的

C++ 虛擬函式表是屬於類的還是屬於物件的

    虛擬函式表到底是一個物件一個,還是一個類一個。從節省記憶體的角度上說,應該是一個類一個,同一個類的不同物件擁有相同虛擬函式表。我們用程式碼來試一試


class classA {

    virtual void function() {

    }
};

int main()
{
    classA *a = new classA();
    printf("%x\n", *(int*)(void*)a);
    for (int i = 0; i < 10000;i++) {
        classA *b = new classA();
        if (*(int*)(void*)a == *(int*)(void*)b) {
            printf("一樣的虛擬函式表地址\n");
        }
        else {
            printf("不一樣的虛擬函式表地址\n");
            break;
        }
        delete b;
    }
    return 0;
}

列印結果是滿屏的一樣的虛擬函式表地址,所以結論是虛擬函式表是屬於一類的