針對繼承方面的知識點在進行簡單的總結:
1.公有繼承方式什麼是虛繼承?基類成員對其物件的可見性,公有成員可見而其他成員均不可見。
基類成員對其派生類可見性,基類的公有成員和保護成員可見,私有不可見。
基類成員對其派生類物件的可見性,基類公有成員可見。
2.私有繼承方式
基類成員對其物件的可見性,公有成員可見而其他成員均不可見。
基類成員對其派生類可見性,基類的公有成員和保護成員可見,私有不可見。基類的公有成員和保護成員都作為派生類的私有成員,並且不能被這個派生類的子類訪問,這意味著將無法繼承下去。
基類成員對其派生類物件的可見性,均不可見。
3.保護繼承方式
基類成員對其物件的可見性,公有成員可見而其他成員均不可見。
基類成員對其派生類可見性,基類的公有成員和保護成員可見,私有不可見。基類的公有成員和保護成員都作為派生類的保護成員,並且不能被這個派生類的子類訪問。
基類成員對其派生類物件的可見性,均不可見。
4.虛繼承與繼承的差異
假設derived 繼承自base類,那麼derived與base是一種「is a」的關係,即derived類是base類,而反之錯誤;
假設derived 虛繼承自base類,那麼derivd與base是一種「has a」的關係,即derived類有乙個指向base類的vptr。
虛擬繼承是多重繼承特有的概念。假設類d繼承自b和c,而bc都繼承自a,則在累d中會出現兩個a。為了節省記憶體空間可以將b,c對a的繼承定義為虛擬繼承,而a就成了虛擬基類。
什麼是com?
components object model是軟體互相通訊的一種方式,它是一種二進位制和網路標準,允許任意兩個元件互相通訊而不管他們是在同乙個作業系統還是什麼計算機允許的,或是元件用什麼語言編寫的。首先com是基於物件的,com物件被很好的封裝起來我們可以通過它的介面來訪問com物件裡面的方法,簡單地說,程式設計難度降低程式設計師不需事無鉅細的開發所有元件模組,實現分層次,軟體的復用率提高。
com物件必須實現lunknown介面,這個介面是管理com物件生命週期的。qi即查詢介面,不同的介面實現不同的方法,乙個介面轉向另乙個介面過程就是qi。guids每個元件獨一無二的身份,com元件必須註冊後才能使用。
當然com元件也有著致命的缺陷,由於它的重用性,com物件的實現可以公升級,如果兩個程式都使用乙個com物件,如果這個com元件公升級了,很有可能出現某個程式無法使用新元件的情況,這被稱為dll災難。
print函式只是單純的從記憶體中讀出資料,並不會進行型別轉換, printf(「%d」,5.01)和printf(「%f」,5)的輸出結果就是一種例子,5為整型在記憶體中為16位或32位,而%f為double型為64位,這就會導致越界訪問,讀入了好多靜態儲存區的0,所以結果就是0.00000,同樣的%d為整型唯讀64位的低32位,所以第乙個結果是乙個很大的數。
《程式設計師面試寶典》讀書筆記 1
1.控制代碼和指標的區別和聯絡?控制代碼和指標是完全兩個不同的概念,控制代碼是個32bit unit,windows系統用控制代碼標記系統資源。指標只標記某個物理記憶體位址。控制代碼實際上是windows系統在記憶體維護的乙個物件記憶體實體地址列表的整數索引。因為windows系統的記憶體管理經常將...
《程式設計師面試寶典》讀書筆記 2
include int jug int x,int y else return x y int sub int x,int y void test int p int,int int x,int y vector,內部資料結構為陣列。隨機訪問每個元素所需要的時間為常量,在末尾增刪元素與元素數目無關,...
《程式設計師面試寶典讀書筆》讀書筆記7
1.變數的記憶體分配 c語言中有全域性變數,本地變數,靜態變數和暫存器變數。變數的記憶體位址分配是連續的,但是不同變數間的變數確有不同,本地變數和全域性變數分配的記憶體相差十萬八千里,而全域性和靜態變數間記憶體分配是連續的。這是因為全域性和本地變數分配在不同型別的記憶體區域的結果,對於乙個程序的記憶...