第十五章 15 2 3節練習

2021-06-25 18:59:48 字數 561 閱讀 4538

練習15.8

給出靜態型別和動態型別的定義。

解答:這裡的靜態型別和動態型別是指在繼承關係中的兩種表示式或變數。

【引用】表示式的靜態型別在編譯時總是已知的,它是變數宣告時的型別或表示式生成的型別;

【引用】動態型別則是變數或表示式表示的記憶體中的物件的型別。動態型別知道執行時才可知。

練習15.9

在什麼情況下表示式的靜態型別可能與動態型別不同?請給出三個靜態型別與動態型別不同的例子。

解答:【引用】如果表示式既不是引用也不是指標,則它的動態型別永遠與靜態型別一致。

只要不滿足上述條件,則動態型別和靜態型別就不同。這樣的話,可以自己建立例子了。

534頁中對net_price的說明也可以算乙個。

練習15.10

回憶我們在8.1節(第279頁)進行的討論,解釋第284頁中將ifstream傳遞給sales_data的read函式的程式是如何工作的。

解答:這裡涉及到fstream繼承與istream,當程式執行的時候,read函式中的is並不是istream型別,而是fstream型別,此時is的動態型別就是fstream了。

第十五章 15 2 1節練習

終於到15章了,物件導向程式設計 之前一直對這種設計方式沒有什麼概念,這裡把概念在這裡再提一下吧。物件導向程式設計 object oriented programming 的核心思想是資料抽象 繼承和動態繫結。通過使用資料抽象,我們可以將類的介面與實現分離 見第七章 使用繼承,可以定義相似的型別並對...

第十五章 15 3節練習

練習15.11 為你的quote類體系新增乙個名為debug的虛函式,令其分別顯示是每個類的資料成員。解答 void quote debug void bulk quote debug 練習15.12 有必要將乙個成員函式同事宣告成override和final嗎?為什麼?解答 相應情況下應該是有必要...

第十五章 15 9 3節練習

練習15.34 針對圖15.3 第565頁 構建的表示式 a 列舉出在處理表示式過程中所有建構函式。b 列舉出cout q所呼叫的rep。c 列舉出q.eval 所呼叫的eval。解答 a query q query fiery query bird query wind 可以將這個表示式進行化簡 ...