發(fā)現(xiàn)昨天一天讀完第一章.也只是囫圇吞棗.也可能是自己代碼打的太少了,有些地方不可以理解.但是解決了好多我之前的疑問.為什么c++指針儲存的地址,卻需要類型.struct和class的區(qū)別到底是什么.
有寫地方有點亂...不過還是忍住讀完了...
感覺是c++primer第十五章的擴展.
首先講了對象模型在內(nèi)存中的樣子.畫圖有點麻煩之前也有人寫過.所以把他的貼上來.我覺得寫的很好...
吳秦的博客
- 基類武羅在繼承串鏈中被派生多少次,永遠只有一個實例(subobject),例如virtual ios base class中的一個實例
關(guān)鍵詞差異.
struct和class...其實就我而言我是不喜歡寫struct的...沒有為什么..就像太陽總是在明天早上升起來一樣...
c++支持多態(tài)的方法:
- 把一個派生類指針轉(zhuǎn)化成一個基類指針.
這樣會剪切掉基類的部分. - 通過虛函數(shù)機制
- 經(jīng)由dynamic_cast和typeid運算符
多態(tài)的主要用途是經(jīng)由一個公共的接口來影響類型的封裝,這個借口通常定義在一個抽象的基類中.
指針類型會交到編譯器如何解釋某個特定地址中的內(nèi)存內(nèi)容及其大小.
Bear b;
Zooanimal *pz = &b;
Bear *pb = &b;
/*
pb所蘊含的地址包含整個Bear object,pz所云航的地址只包含Bear 中的
Zooanimal subobject
Zooanimal是基類,Bear是派生類
除了在Zooanimal中出現(xiàn)的成員pz無法操作任何member
唯一例外是操作virtual*/
一個指針和一個引用之所以支持多態(tài),是因為它們不引起內(nèi)存中的任何"與類型有關(guān)的內(nèi)存委托操作";會受到改變的只是他們所指向的內(nèi)存的"大小和內(nèi)容解釋方式".
無知就是幸福..沒讀之前.我還感覺我這塊賊6......讀過后疑問更多.