一直對
c++vs2003
測試,結果如下,希望對大家有所幫助
: )
說明:
1該文所給出**只說明類的繼承關係,具體測試輸出**不再詳述; 2
該文測試環境為
vs2003
,其他環境沒測試; 3
在下水平有限,本著學習的心態作此文,有高人路過請不吝賜教,不勝感激。
1單繼承
測試**:
這種情況比較簡單:派生類和基類共用乙個
vptr
,這個指標指向派生類的
vtbl。
2 多繼承
測試**
稍微複雜點:派生類和繼承序列中的第乙個父類公用乙個
vptr
,繼承序列中的第二個父類獨用乙個
vptr
,兩個vptr
都指向派生類的
vtbl
,只是偏移量不一樣。
3 菱形繼承
測試**:
又複雜了一點:兩個
vptr
分別指向兩個
vtbl
,乙個vtbl
代表一條繼承路徑。
訪問基類變數和函式需指明從何處繼承來的基類部分,如
derived d;
d.base1::base; 若
base1
和base2
均為修改
base::foob()
,則為同乙個
foob().
淺探C 程式編譯過程
通常說的編譯指由源 生成可執行檔案的過程。c 程式的編譯又可以分為幾個子過程 預處理 preprocessing 在編譯前的對源 進行文字上的預處理。輸出.i檔案。編譯 compilation 將源 轉化為彙編 輸出.s檔案。彙編 assembly 將彙編 轉化為二進位制檔案。輸出.o檔案。平時執行...
C 記憶體布局
注意,上述只描述的是可執行檔案具有三個段,而不是由該三個段構成。在 linux 下,我們可以通過size命令輸出可執行檔案的段資訊。記憶體布局 存放程式指令和字串常量 我們知道,可執行檔案的文字段包含程式的指令,鏈結器把指令直接從可執行檔案拷貝到記憶體中,形成文字段。存放已初始化的全域性變數和sta...
c 記憶體布局
寫好了 只是第一步,接下來還需要編譯生成對應的二進位制才能使用 預處理,編譯,彙編,鏈結 那麼在執行的時候,和資料在記憶體中都是怎麼分布的呢?c的記憶體布局是怎樣的呢?c 的記憶體布局是怎樣的呢?有一點值得注意,c語言和c 的記憶體布局是不一樣的,這也就是平日裡搜尋c 記憶體布局的文章內容總是很相似...