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