本書匯總國內外眾多著名IT企業近幾年的C++面試筆試真題并予以解析,按知識點類型對常見的C++語言難點和疑點進行了系統歸納和透徹剖析,并提供了一定數量的自測題以便于讀者自我檢驗。
全書邏輯清晰,通俗易懂,適合參加IT企業校園招聘和筆試面試環節的同學復習,也適合C++語言編程愛好者和在校學生閱讀與提高。
300多道面試真題,本書匯總國內外眾多著名IT企業近幾年的C 面試筆試真題并予以解析,按知識點類型對常見的C 語言難點和疑點進行了系統歸納和透徹剖析,并提供了一定數量的自測題便于自我檢驗。
李春葆:武漢大學教授,主要研究方向為數據挖掘和算法設計,從事近30年計算機C/C 語言、數據結構和算法設計等課程的第一線本科教學工作,具備豐富的教學經驗,曾參于深圳名企的筆試和面試題庫建設。出版多本C/C 語言、數據結構、算法設計與分析及數據庫開發方面的精品教材和教學輔導書。
李筱馳:美國俄亥俄州立大學計算機科學專業碩士畢業,曾參加谷歌等名企面試,具備比較豐富的企業筆試和面試經驗。目前在西雅圖亞馬遜總部工作。
目 錄
第1章 C 中的C.. 1
常見考點.. 1
1.1 類型系統和類型安全.. 1
1.1.1 要點歸納.. 1
1.1.2 面試真題解析.. 3
1.2 const和volatile. 4
1.2.1 要點歸納.. 4
1.2.2 面試真題解析.. 6
1.3 C 的顯式類型轉換.. 7
1.3.1 要點歸納.. 7
1.3.2 面試真題解析.. 9
1.4 內存管理.. 10
1.4.1 要點歸納.. 10
1.4.2 面試真題解析.. 13
1.5 C 函數設計.. 15
1.5.1 要點歸納.. 15
1.5.2 面試真題解析.. 22
1.6 斷言.. 27
1.6.1 要點歸納.. 27
1.6.2 面試真題解析.. 27
1.7 自測題和參考答案.. 28
1.7.1 自測題.. 28
1.7.2 參考答案.. 31
第2章 類和對象Ⅰ 33
常見考點.. 33
2.1 類.. 33
2.1.1 要點歸納.. 33
2.1.2 面試真題解析.. 48
2.2 靜態成員和靜態對象.. 57
2.2.1 要點歸納.. 57
2.2.2 面試真題解析.. 60
2.3 對象指針.. 62
2.3.1 要點歸納.. 62
2.3.2 面試真題解析.. 64
2.4 對象數組.. 66
2.4.1 要點歸納.. 66
2.4.2 面試真題解析.. 69
2.5 this指針.. 70
2.5.1 要點歸納.. 70
2.5.2 面試真題解析.. 76
2.6 對象之間的復制.. 78
2.6.1 要點歸納.. 78
2.6.2 面試真題解析.. 82
2.7 自測題和參考答案.. 85
2.7.1 自測題.. 85
2.7.2 參考答案.. 91
第3章 類和對象Ⅱ. 94
常見考點.. 94
3.1 常對象和常對象成員.. 94
3.1.1 要點歸納.. 94
3.1.2 面試真題解析.. 98
3.2 C 中的explicit 101
3.2.1 要點歸納.. 101
3.2.2 面試真題解析.. 102
3.3 子對象.. 103
3.3.1 要點歸納.. 103
3.3.2 面試真題解析.. 108
3.4 嵌套類和局部類.. 109
3.4.1 要點歸納.. 109
3.4.2 面試真題解析.. 111
3.5 自測題和參考答案.. 114
3.5.1 自測題.. 114
3.5.2 參考答案.. 117
第4章 友元和運算符重載... 119
常見考點.. 119
4.1 友元函數.. 119
4.1.1 要點歸納.. 119
4.1.2 面試真題解析.. 124
4.2 友元類.. 126
4.2.1 要點歸納.. 126
4.2.2 面試真題解析.. 127
4.3 運算符重載概述.. 128
4.3.1 要點歸納.. 128
4.3.2 面試真題解析.. 130
4.4 運算符重載設計.. 132
4.4.1 要點歸納.. 132
4.4.2 面試真題解析.. 146
4.5 兩個類對象之間的轉換.. 154
4.5.1 要點歸納.. 154
4.5.2 面試真題解析.. 156
4.6 自測題和參考答案.. 157
4.6.1 自測題.. 157
4.6.2 參考答案.. 162
第5章 模板和異常處理... 166
常見考點.. 166
5.1 函數模板.. 166
5.1.1 要點歸納.. 166
5.1.2 面試真題解析.. 172
5.2 類模板.. 175
5.2.1 要點歸納.. 175
5.2.2 面試真題解析.. 182
5.3 異常處理.. 183
5.3.1 要點歸納.. 183
5.3.2 面試真題解析.. 188
5.4 自測題和參考答案.. 190
5.4.1 自測題.. 190
5.4.2 參考答案.. 192
第6章 繼承和派生... 193
常見考點.. 193
6.1 繼承和派生基礎.. 193
6.1.1 要點歸納.. 193
6.1.2 面試真題解析.. 204
6.2 基類對象和派生類對象的使用關系.. 217
6.2.1 要點歸納.. 217
6.2.2 面試真題解析.. 220
6.3 虛繼承.. 227
6.3.1 要點歸納.. 227
6.3.2 面試真題解析.. 238
6.4 自測題和參考答案.. 242
6.4.1 自測題.. 242
6.4.2 參考答案.. 248
第7章 虛函數和多態性... 251
常見考點.. 251
7.1 虛函數.. 251
7.1.1 要點歸納.. 251
7.1.2 面試真題解析.. 266
7.2 純虛函數和抽象類.. 289
7.2.1 要點歸納.. 289
7.2.2 面試真題解析.. 291
7.3 自測題和參考答案.. 294
7.3.1 自測題.. 294
7.3.2 參考答案.. 300
第5章·模板和異常處理
* 函數模板的設計方法。* 函數模板的實例化過程。* 類模板的設計方法。* 類模板的實例化過程。* 異常處理語句try…catch的執行過程。* 異常處理中對象的構造與析構過程。5.1 函 數 模 板5.1.1 要點歸納 1.定義函數模板 值(value)和類型(type)是數據的兩個主要特征,在模板中數據的值和類型都被參數化了。C 提供了兩種模板機制,即函數模板和類模板。模板中的類型參數也稱為類屬參數。模板的聲明或定義只能在全局或類范圍內進行,不能在局部范圍(如函數)內進行。使用模板的目的就是為了能夠讓程序員編寫與類型無關的代碼。 在定義了一個函數模板后,當編譯系統發現有一個對應的函數調用時將根據實參中的類型來確認是否匹配函數模板中對應的類型形參,然后生成一個重載函數。該重載函數的定義體與函數模板的函數定義體相同,它稱為模板函數(template function)。 模板、模板類、對象和模板函數之間的關系如圖5.1所示。 函數模板與模板函數的區別是函數模板是一個模板,其中用到通用類型參數,不能直接執行;模板函數是一個具體的函數,它由編譯系統在遇到具體函數調用時生成,具有程序代碼,可以執行。
圖5.1 模板、模板類、對象和模板函數之間的關系 定義函數模板的一般格式如下: template <類型形參表> //類型參數聲明 返回類型 函數名(形參表) //函數模板 { 函數體; } 例如,以下代碼定義了一個絕對值的函數模板: template //注意末尾不要加分號 T abs(T x) { if(x<0) return -x; return x; } ? 有關定義函數模板的說明如下: ? “類型形參表”可以包含基本數據類型,也可以包含類類型。類型形參需要加前綴class或typename表示“跟隨類型形參”。如果類型形參多于一個,則每個類型形參都要使用class或typename。這里class和typename關鍵字沒有任何區別,C 早期對模板的支持并不嚴謹,沒有引入新的關鍵字,后來又引入了新關鍵字typename,專門用來定義類型 參數。 ? “類型形參表”中的參數必須是唯一的,而且應該在函數體中至少出現一次。例如template是錯誤的,其中類型參數名稱重復。 ? 在template語句與函數模板聲明之間不允許有其他語句。例如下面的定義是錯 誤的: template int i; //錯誤 T min(T x,T y) { ? 函數體;