本書是C++程序設(shè)計的入門書籍,適合初學(xué)者使用。全書共11章,第1章主要介紹C++對C語言的擴充;第2~5章主要介紹C++的核心知識,包括類與對象、運算符重載、繼承與派生、多態(tài)與虛函數(shù);第6~7章主要介紹模板與STL;第8~9章主要介紹C++的I/O流和異常;第10章主要介紹C++11新特性;第11章帶領(lǐng)讀者開發(fā)一個綜合項目——酒店管理系統(tǒng),讓讀者將前面所學(xué)知識融會貫通,并了解實際項目的開發(fā)流程。
本書附有配套視頻、源代碼、題庫、教學(xué)課件等資源,還提供在線答疑服務(wù),希望幫助讀者更好地學(xué)習(xí)書中的內(nèi)容。
本書可作為高等教育本、?圃盒S嬎銠C相關(guān)專業(yè)的教材,也可作為編程愛好者的參考讀物。
1.黑馬程序員經(jīng)典教材改版。
2.本書內(nèi)容做了大量更新,開發(fā)工具升級為最新的Visual Studio 2019,增加了兩個綜合案例,突出培養(yǎng)學(xué)生的動手能力。
3.本書附有配套視頻、源代碼、題庫、教學(xué)課件等豐富的教學(xué)資源。
黑馬程序員,傳智播客旗下高端IT品牌,成立于2006年,由中國Java培訓(xùn)先行者張孝祥老師發(fā)起,聯(lián)合全球最大的中文IT社區(qū)CSDN、中關(guān)村軟件園共同創(chuàng)辦的一家專業(yè)教育機構(gòu)。辦學(xué)至今,我們一直堅守著“為千萬人少走彎路而著書,為中華軟件之崛起而講課”的辦學(xué)理念,堅持培養(yǎng)優(yōu)秀軟件應(yīng)用工程師的宏偉目標,在累計培養(yǎng)的十萬余名學(xué)員中,其中90%的學(xué)員均已在北、上、廣等一線城市高薪就業(yè)。為了迎合軟件市場的需求,我們陸續(xù)開設(shè)了Java、網(wǎng)頁平面、PHP、.Net、iOS、C/C++、Android等9個專業(yè)方向的課程,并且未來將逐漸開設(shè)其他專業(yè)方向的課程。隨著傳智播客的日益壯大,除了北京總部,我們在上海、廣州、武漢、成都、深圳等地也創(chuàng)立了直營分支機構(gòu),傳智播客儼然已成為了國內(nèi)最具專業(yè)口碑的IT教育機構(gòu)。
第 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 強制類型轉(zhuǎn)換 13
1.4 本章小結(jié) 14
1.5 本章習(xí)題 15
第 2章 類與對象 16
2.1 面向?qū)ο蟪绦蛟O(shè)計思想 16
2.2 初識類和對象 17
2.2.1 類的定義 17
2.2.2 對象的創(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 含有成員對象的類的構(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章 運算符重載 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 關(guān)系運算符重載 49
3.2.3 賦值運算符重載 51
3.2.4 下標運算符重載 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ù)——重載“()”運算符 56
3.5 智能指針——重載“*”和“->”
運算符 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ù)實現(xiàn)多態(tài) 83
5.2.1 虛函數(shù) 84
5.2.2 虛函數(shù)實現(xiàn)多態(tài)的機制 86
5.2.3 虛析構(gòu)函數(shù) 87
5.3 純虛函數(shù)和抽象類 89
【階段案例】停車場管理系統(tǒng) 91
一、案例描述 91
二、案例分析 91
三、案例實現(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ù)模板實例化 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 本章小結(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 雙向迭代器與隨機訪問迭代器 135
7.6 算法 136
7.6.1 算法概述 136
7.6.2 常用的算法 136
【階段案例】演講比賽 138
一、案例描述 138
二、案例分析 139
三、案例實現(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 標準I/O流 143
8.2.1 預(yù)定義流對象 143
8.2.2 標準輸出流 143
8.2.3 標準輸入流 144
8.3 文件流 147
8.3.1 文件流對象的創(chuàng)建 147
8.3.2 文件的打開與關(guān)閉 148
8.3.3 文本文件的讀寫 149
8.3.4 二進制文件的讀寫 152
8.3.5 文件隨機讀寫 154
8.4 字符串流 155
8.5 本章小結(jié) 158
8.6 本章習(xí)題 158
第9章 異!160
9.1 異常處理方式 160
9.2 棧解旋 163
9.3 標準異常 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表達式 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 移動構(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 支持更多擴展 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章 綜合項目—酒店管理系統(tǒng) 205
11.1 項目分析 205
11.1.1 功能描述 205
11.1.2 項目設(shè)計 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 程序調(diào)試 218
11.4.1 設(shè)置斷點 219
11.4.2 單步調(diào)試 220
11.4.3 觀察變量 221
11.4.4 項目調(diào)試 223
11.5 項目心得 224
11.6 本章小結(jié) 224
附錄I 格式控制標志位和操作符 225
附錄II 標準異常類所屬的頭文件及其
含義 226