《C和C++程式設計師面試祕笈》中存在的錯誤
阿新 • • 發佈:2019-02-19
最近在複習C++面試的考點,所以購買了《C和C++程式設計師面試祕笈》這本書(人民郵電出版社2014.3 ISBN:978-7-115-34113-6)。
書整體上是非常不錯的,知識點覆蓋比較全面,很符合我的需求。美中不足的是書中的錯誤有點多。閱讀的過程中自己做了一個總結,現在貼上來供大家參考。
總結的形式比較簡單,僅供參考。同時限於本人的水平,總結中可能存在一些錯誤,歡迎指正。
因為我只選擇性的看了第1、2、3、5、6、7章(全文共12章),所以本文只列出了這幾個章節中存在的錯誤。
頁碼 | 面試題編號 | 存在的錯誤 |
---|---|---|
P15 | 面試題11 | <>只會檢查預定義目錄,不是首先檢查預定義的目錄 |
P15 | 面試題12 | Ctrl+C時,不會呼叫atexit註冊的函式,linux 的手冊中顯示只有normal termination才會呼叫atexit |
P67 | 面試題17 | 應該第14,15,16編譯錯誤,13行執行時錯誤 |
P71 | 面試題21 | 第7行後,str[0]指向的是to後面的’\0’,而不是Nanjing後面 |
P85 | 面試題32 | malloc與calloc不是一塊與n塊的區別,calloc分配的還是一塊,只是大小為n*size。本質上沒什麼區別,相當於malloc的大小為n*sizeof(type) |
P150 | 面試題5 | 應該是將&&替換為& |
P151 | 面試題7 | 執行時間型別資訊(RTTI)翻譯錯誤,這裡應該為執行時型別資訊(RTTI) |
P152 | 面試題8 | 應該為編譯器將為你計算常數表示式的值,前處理器只進行文字替換,沒有計算。常數表示式的計算是在編譯階段進行的(生成彙編程式碼時) |
P155 | 面試題13 | 和P25面試題10重複了 |
P171 | 面試題10 | 第25行在函式體內呼叫父類建構函式是合法的,但是作用僅僅是建立一個A物件,所以B的建構函式會自動呼叫父類A的無參建構函式,如果A沒有無參建構函式,才會編譯出錯。 |
P173 | 面試題12 | C選項是錯誤的,靜態成員一樣受到private控制符的作用 |
P182 | 面試題20 | 應該為解構函式的執行順序與建構函式相反 |
P195 | 面試題28 | 拷貝建構函式的傳入引數必須為const B &b |
P199 | 面試題30 | 拷貝建構函式的傳入引數必須為const |
P204 | 面試題32 | C++編譯器處理後包含了原函式名,函式引數型別。不是引數數量,也沒有返回型別資訊,返回值是沒有過載的 |
P205 | 面試題34 | 翻譯錯誤,應該為重寫(overriding) 過載(overloading) |
P205 | 面試題34 | 只有虛擬函式能夠被覆寫(C++沒有抽象方法這麼一說,也沒有虛方法這麼一說,作者可能是想說抽象類的方法吧,抽象類的方法也屬於虛擬函式) |
P228 | 面試題7 | 應該為 class Child1 : public Parent 與 class Child2 : public Parent |
P229 | 面試題7 | 文字錯誤,應該為Parent類的vtbl: Parent::foo1()的地址,Parent::foo2()的地址 (原文為foo1()) |
P235 | 面試題11 | (1)(2)應該選D,因為都是一個指標的大小,這個是和平臺相關的,在64bit機器上,結果是8。 |
P242 | 面試題15 | 第(2)個應該為 任何虛擬基類的建構函式按照他們被繼承的順序構造。 |
P252 | 擴充套件知識:虛擬函式表 | 這裡感覺標題字號弄錯了,這個讓人感覺很像是面試題24的子專案。 |