本書是C++程序設計的入門書籍,適合初學者使用。全書共11章,第1章主要介紹C++對C語言的擴充;第2~5章主要介紹C++的核心知識,包括類與對象、運算符重載、繼承與派生、多態(tài)與虛函數(shù);第6~7章主要介紹模板與STL;第8~9章主要介紹C++的I/O流和異常;第10章主要介紹C++11新特性;第11章帶領讀者開發(fā)一個綜合項目——酒店管理系統(tǒng),讓讀者將前面所學知識融會貫通,并了解實際項目的開發(fā)流程。
本書附有配套視頻、源代碼、題庫、教學課件等資源,還提供在線答疑服務,希望幫助讀者更好地學習書中的內容。
本書可作為高等教育本、專科院校計算機相關專業(yè)的教材,也可作為編程愛好者的參考讀物。
1.黑馬程序員經(jīng)典教材改版。
2.本書內容做了大量更新,開發(fā)工具升級為最新的Visual Studio 2019,增加了兩個綜合案例,突出培養(yǎng)學生的動手能力。
3.本書附有配套視頻、源代碼、題庫、教學課件等豐富的教學資源。
黑馬程序員,傳智播客旗下高端IT品牌,成立于2006年,由中國Java培訓先行者張孝祥老師發(fā)起,聯(lián)合全球最大的中文IT社區(qū)CSDN、中關村軟件園共同創(chuàng)辦的一家專業(yè)教育機構。辦學至今,我們一直堅守著“為千萬人少走彎路而著書,為中華軟件之崛起而講課”的辦學理念,堅持培養(yǎng)優(yōu)秀軟件應用工程師的宏偉目標,在累計培養(yǎng)的十萬余名學員中,其中90%的學員均已在北、上、廣等一線城市高薪就業(yè)。為了迎合軟件市場的需求,我們陸續(xù)開設了Java、網(wǎng)頁平面、PHP、.Net、iOS、C/C++、Android等9個專業(yè)方向的課程,并且未來將逐漸開設其他專業(yè)方向的課程。隨著傳智播客的日益壯大,除了北京總部,我們在上海、廣州、武漢、成都、深圳等地也創(chuàng)立了直營分支機構,傳智播客儼然已成為了國內最具專業(yè)口碑的IT教育機構。
第 1章 初識C++ 1
1.1 C++簡介 1
1.1.1 C++的發(fā)展史 1
1.1.2 C++的特點 2
1.2 第 一個C++程序的編寫 2
1.3 C++對C語言的擴充 3
1.3.1 命名空間 3
1.3.2 控制臺輸入/輸出 4
1.3.3 類型增強 5
1.3.4 默認參數(shù) 6
1.3.5 函數(shù)重載 7
1.3.6 引用 8
1.3.7 字符串類 10
1.3.8 new/delete 11
1.3.9 extern"C" 12
1.3.10 強制類型轉換 13
1.4 本章小結 14
1.5 本章習題 15
第 2章 類與對象 16
2.1 面向對象程序設計思想 16
2.2 初識類和對象 17
2.2.1 類的定義 17
2.2.2 對象的創(chuàng)建與使用 18
2.3 封裝 20
2.4 this指針 22
2.5 構造函數(shù) 22
2.5.1 自定義構造函數(shù) 23
2.5.2 重載構造函數(shù) 25
2.5.3 含有成員對象的類的構造函數(shù) 26
2.6 析構函數(shù) 28
2.7 拷貝構造函數(shù) 29
2.7.1 拷貝構造函數(shù)的定義 30
2.7.2 淺拷貝 31
2.7.3 深拷貝 33
2.8 關鍵字修飾類的成員 33
2.8.1 const修飾類的成員 33
2.8.2 static修飾類的成員 36
2.9 友元 38
2.9.1 友元函數(shù) 38
2.9.2 友元類 40
2.10 本章小結 42
2.11 本章習題 42
第3章 運算符重載 44
3.1 運算符重載概述 44
3.1.1 運算符重載的語法 44
3.1.2 運算符重載的規(guī)則 45
3.1.3 運算符重載的形式 46
3.2 常用的運算符重載 48
3.2.1 輸入/輸出運算符重載 48
3.2.2 關系運算符重載 49
3.2.3 賦值運算符重載 51
3.2.4 下標運算符重載 52
3.3 類型轉換 54
3.3.1 類型轉換函數(shù) 54
3.3.2 轉換構造函數(shù) 55
3.4 仿函數(shù)——重載“()”運算符 56
3.5 智能指針——重載“*”和“->”
運算符 57
3.6 本章小結 60
3.7 本章習題 60
第4章 繼承與派生 62
4.1 繼承 62
4.1.1 繼承的概念 62
4.1.2 繼承方式 64
4.1.3 類型兼容 68
4.2 派生類 70
4.2.1 派生類的構造函數(shù)與析構函數(shù) 70
4.2.2 在派生類中隱藏基類成員
函數(shù) 73
4.3 多繼承 74
4.3.1 多繼承方式 74
4.3.2 多繼承派生類的構造函數(shù)與
析構函數(shù) 75
4.3.3 多繼承二義性問題 76
4.4 虛繼承 79
4.5 本章小結 81
4.6 本章習題 81
第5章 多態(tài)與虛函數(shù) 83
5.1 多態(tài)概述 83
5.2 虛函數(shù)實現(xiàn)多態(tài) 83
5.2.1 虛函數(shù) 84
5.2.2 虛函數(shù)實現(xiàn)多態(tài)的機制 86
5.2.3 虛析構函數(shù) 87
5.3 純虛函數(shù)和抽象類 89
【階段案例】停車場管理系統(tǒng) 91
一、案例描述 91
二、案例分析 91
三、案例實現(xiàn) 93
5.4 本章小結 93
5.5 本章習題 93
第6章 模板 95
6.1 模板的概念 95
6.2 函數(shù)模板 96
6.2.1 函數(shù)模板的定義 96
6.2.2 函數(shù)模板實例化 97
6.2.3 函數(shù)模板重載 99
6.3 類模板 101
6.3.1 類模板定義與實例化 101
6.3.2 類模板的派生 102
6.3.3 類模板與友元函數(shù) 104
6.4 模板的參數(shù) 108
6.5 模板特化 110
6.6 本章小結 112
6.7 本章習題 112
第7章 STL 114
7.1 STL組成 114
7.2 序列容器 116
7.2.1 vector 116
7.2.2 array 121
7.2.3 list 122
7.2.4 forward_list 123
7.3 關聯(lián)容器 124
7.3.1 set和multiset 125
7.3.2 map和multimap 128
7.4 容器適配器 131
7.4.1 stack 131
7.4.2 queue 132
7.4.3 priority_queue 133
7.5 迭代器 134
7.5.1 輸入迭代器與輸出迭代器 134
7.5.2 前向迭代器 135
7.5.3 雙向迭代器與隨機訪問迭代器 135
7.6 算法 136
7.6.1 算法概述 136
7.6.2 常用的算法 136
【階段案例】演講比賽 138
一、案例描述 138
二、案例分析 139
三、案例實現(xiàn) 139
7.7 本章小結 140
7.8 本章習題 140
第8章 I/O流 142
8.1 I/O流類庫 142
8.1.1 ios類庫 142
8.1.2 streambuf類庫 143
8.2 標準I/O流 143
8.2.1 預定義流對象 143
8.2.2 標準輸出流 143
8.2.3 標準輸入流 144
8.3 文件流 147
8.3.1 文件流對象的創(chuàng)建 147
8.3.2 文件的打開與關閉 148
8.3.3 文本文件的讀寫 149
8.3.4 二進制文件的讀寫 152
8.3.5 文件隨機讀寫 154
8.4 字符串流 155
8.5 本章小結 158
8.6 本章習題 158
第9章 異常 160
9.1 異常處理方式 160
9.2 棧解旋 163
9.3 標準異!164
9.4 靜態(tài)斷言 166
9.5 本章小結 167
9.6 本章習題 168
第 10章 C++11新特性 170
10.1 簡潔的編程方式 170
10.1.1 關鍵字 170
10.1.2 基于范圍的for循環(huán) 173
10.1.3 lambda表達式 173
10.2 智能指針 174
10.2.1 unique_ptr 175
10.2.2 shared_ptr 175
10.2.3 weak_ptr 177
10.3 提高編程效率 178
10.3.1 右值引用 178
10.3.2 移動構造 179
10.3.3 move()函數(shù) 181
10.3.4 完美轉發(fā) 181
10.3.5 委托構造 183
10.3.6 繼承構造 184
10.3.7 函數(shù)包裝 186
10.4 并行編程 188
10.4.1 多線程 189
10.4.2 互斥鎖 190
10.4.3 lock_guard和unique_lock 191
10.4.4 條件變量 193
10.4.5 原子類型 195
10.5 支持更多擴展 197
10.5.1 原生字符串 197
10.5.2 Unicode編碼支持 198
10.5.3 新增的庫 199
10.5.4 alignof和alignas 201
10.6 本章小結 202
10.7 本章習題 202
第 11章 綜合項目—酒店管理系統(tǒng) 205
11.1 項目分析 205
11.1.1 功能描述 205
11.1.2 項目設計 206
11.2 項目實現(xiàn) 207
11.2.1 客房模塊的實現(xiàn) 207
11.2.2 客房管理模塊的實現(xiàn) 211
11.2.3 界面模塊的實現(xiàn) 213
11.2.4 main()函數(shù)實現(xiàn) 216
11.3 效果顯示 216
11.4 程序調試 218
11.4.1 設置斷點 219
11.4.2 單步調試 220
11.4.3 觀察變量 221
11.4.4 項目調試 223
11.5 項目心得 224
11.6 本章小結 224
附錄I 格式控制標志位和操作符 225
附錄II 標準異常類所屬的頭文件及其
含義 226