1.建構函式可以過載,虛函式不能;new delete是運算子,能過載能呼叫建構函式和析構函式,malloc free不能;this指標本質就是物件的位址,物件的位址就是一堆成員變數所在空間的起始位址;new *** 、new [***],delete ***, delete[***],分配和析構的方式都不同,本質上講帶的都要呼叫**建構函式,根據物件的個數依次呼叫構造和析構函式,從而完成物件陣列的記憶體管理,而不帶只是對單一的物件資源進行管理。
2.虛表指標在建構函式中由編譯器負責初始化,在析構函式中會重新設定。在析構函式中,編譯器會對虛表指標進行重新,確保當前虛表為當前物件的虛表。因為析構函式在繼承鏈中被反向呼叫,它要確保祖先對應的析構函式都能正確實行。
3只有在使用物件的指標或引用呼叫虛函式才會訪問虛表。
4.用父類指標和子類指標都能安全的訪問子類的資料。但是用子類指標訪問父類資料會有危險。
比如訪問父類不存在的成員變數(訪問越界)。
5.父類指標指向子類堆物件的首位址,若此時呼叫析構函式,若析構函式沒有設成虛函式,那麼就會直接呼叫父類的析構函式。
6.純虛函式對應虛表中的purecall
7.多重繼承不難,相比就有幾重就設定幾個虛表。菱形繼承比較複雜:1)需要設定標記防止重複構造;2)通過虛繼承防止成員變數的重疊。
C 反彙編學習筆記(二)
chinese 1 位址 指標 引用 c 中位址標號用16進製表示,取乙個變數位址使用 操作符,只有變數才存在記憶體位址,常量沒有位址 不包括const定義的偽常量 指標是一種資料型別,用於儲存各種資料型別在記憶體中的位址。指標變數也可以取出位址,所以會出現多級指標。c 中引用不可以單獨定義,定義的...
C 反彙編學習筆記(一)
chinese c 整數與浮點數的儲存方式 1 整數型別 無符號整數的所有位都用來表示數值,有符號整數的最高位是符號位,其餘位以補碼格式儲存。補碼規則就是用0減去這個數的絕對值 取反加一 首先我們知道x x 反碼 0xffffffff,因此x x 反碼 1 0,因此x 補碼 0 x x 反碼 1。補...
虛函式,靜態聯編與動態聯編(讀書筆記)
靜態聯編與動態聯編 聯編 程式自身彼此關聯的過程,確定程式中的操作呼叫與執行該操作的 間的關係 靜態聯編 靜態束定 聯編工作出現在編譯階段,用物件名或者類名來限定要呼叫的函式。動態聯編 聯編工作在程式執行時執行,在程式執行時才確定將要呼叫的函式。虛函式 虛函式是動態聯編的基礎。1,是非靜態的成員函式...