1. 程式人生 > >《C和C++程式設計師面試祕笈》中存在的錯誤

《C和C++程式設計師面試祕笈》中存在的錯誤

最近在複習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的子專案。