C++ Daily 《5》----虛函數表的共享問題
阿新 • • 發佈:2018-11-08
.net class pre int 全部 版權 ++ trac end
版權聲明:本文為博主原創文章,未經博主同意不得轉載。 https://blog.csdn.net/u012653791/article/details/25537161
問題:
包括一個以上虛函數的 class B, 它所定義的 對象是否共用一個虛函數表?
分析: 因為含有虛函數,因此對象內存包括了一個指向虛函數表的指針,可是這個指針指向的是同一個虛函數表嗎?
實驗例如以下:
class A { public: virtual void print() { cout << "print A:" << endl;} private: int a; }; A a[2]; cout << "vptr of a[0] " << *(int*)&a[0] << endl; cout << "vptr of a[1] " << *(int*)&a[1] << endl;
結論:
結果表面,同一個類的全部對象,都共享同一個虛函數表。
派生問題:
派生類 和 基類是否共享同一個虛函數表呢?
C++ Daily 《5》----虛函數表的共享問題