讓我們一個C++例如:C++ vtable究竟是如何工作的? (與實施例中的Q值。)
class A
{
public:
A() { cout << "hey" << endl; }
~A() { cout << "by" << endl; }
};
class B : public A
{
public:
B() {}
virtual ~B() { cout << "from b" << endl; }
};
int main()
{
A * a = new B[5];
delete[] a;
return 0;
}
此代碼的結果是「是」的無限循環,這是爲什麼? B虛表應該被upcast到沒有vtable的A,所以我希望它在嘗試訪問虛擬構造函數時拋出一個異常。
p.s. 在哪裏我可以閱讀各種有線構造函數析構函數的行爲舉例? (附範例)
[何時使用虛擬析構函數?](https://stackoverflow.com/questions/461203/when-to-use-virtual-destructors) – CoryKramer
@CoryKramer我不認爲這是完全重複的,OP不理解爲什麼只在派生類中創建虛擬驅動器不起作用。 – Slava
歡迎來到Stack Overflow。請花些時間閱讀[The Tour](http://stackoverflow.com/tour),並參閱[幫助中心](http://stackoverflow.com/help/asking)中的資料,瞭解您可以在這裏問。 –