vptr

    4熱度

    6回答

    假設我有兩個繼承具有純虛函數的基類的類。這兩個類都實現了它自己的那個函數版本,但不添加額外的成員變量,因此它們具有相同的大小。現在有時候,在程序執行過程中,我想將一個類轉換爲另一個類而不復制其所有數據。所以基本上我想讓它使用其他類的虛擬表。有沒有一種便攜的方式來做到這一點?

    6熱度

    3回答

    在調試某個程序的核心轉儲時,我發現它所包含的多態的對象失去了它的VPTr,並且我看到它指向NULL。 對象失去VPTr時可能發生什麼情況。 由於提前, Brijesh

    5熱度

    2回答

    據我所知,對象中的virtual函數指針表的位置依賴於編譯器。 將這個指針放在對象的開頭還是末尾,反之亦然?

    1熱度

    5回答

    以下代碼: #include <stdio.h> class Parent { public: virtual void func() {printf("Parent\n");} }; class Child1 : public Parent { virtual void func() {printf("Child1\n");} }; class Child

    7熱度

    6回答

    讓虛擬表和虛擬指針數說,我們有以下程序: class A { public: virtual fun(){}; }; class B:public A { public: virtual fun(){}; }; int main() { A a1; B b1; } 我的問題是有多少vtables多少vptrs將被創建,當我們運行這個

    0熱度

    4回答

    我想知道是否存在一種可能的優化,即編譯器不需要將vptr分配給實例化對象,即使對象的類型是具有虛擬方法的類。 例如考慮: #include <iostream> struct FooBase { virtual void bar()=0; }; struct FooDerived : public FooBase { virtual void bar() { std

    2熱度

    3回答

    有這樣的代碼: #include <iostream> class Base { int x; }; class Derived : virtual public Base { int y; }; int main() { std::cout << sizeof(Derived) << std::endl; // prints 12 r