本書緊密結(jié)合C++語(yǔ)言的新標(biāo)準(zhǔn),以C++語(yǔ)言為工具講述面向?qū)ο蟪绦蛟O(shè)計(jì)方法。全書分為兩個(gè)部分:第一部分介紹C++語(yǔ)言基礎(chǔ)內(nèi)容及結(jié)構(gòu)化程序設(shè)計(jì)方法,包括基本類型、表達(dá)式、語(yǔ)句、函數(shù)、數(shù)組、指針等;第二部分介紹面向?qū)ο蟪绦蛟O(shè)計(jì)方法及C++語(yǔ)言中支持面向?qū)ο蟪绦蛟O(shè)計(jì)的主要機(jī)制,包括類、繼承、多態(tài)、模板、命名空間、異常處理、標(biāo)準(zhǔn)庫(kù)及泛型算法等。書中每章都包括豐富的代碼和習(xí)題,供讀者分析和練習(xí)。
本書既可作為計(jì)算機(jī)專業(yè)本科生程序設(shè)計(jì)課程的入門教材,也可以作為相關(guān)專業(yè)高年級(jí)學(xué)生面向?qū)ο蟪绦蛟O(shè)計(jì)的教材,還可供軟件開發(fā)人員參考。
本書適合作為高等院校“C++語(yǔ)言程序設(shè)計(jì)”課程的教堂用書,還可作為C++語(yǔ)言的自學(xué)或教學(xué)參考書。
(1)根據(jù)C++的最新標(biāo)準(zhǔn)編寫。(2)示例簡(jiǎn)單實(shí)用、短小精悍且貫穿全書。(3)融入軟件工程思想。(4)詮釋經(jīng)典實(shí)例,本土化展示。
目 錄
第1章 程序設(shè)計(jì)與C++語(yǔ)言入門 1
1.1 程序及相關(guān)概念 1
1.1.1 計(jì)算機(jī)與用戶(人) 1
1.1.2 算法 2
1.1.3 程序 3
1.2 程序設(shè)計(jì) 3 目 錄
第1章 程序設(shè)計(jì)與C++語(yǔ)言入門 1
1.1 程序及相關(guān)概念 1
1.1.1 計(jì)算機(jī)與用戶(人) 1
1.1.2 算法 2
1.1.3 程序 3
1.2 程序設(shè)計(jì) 3
1.2.1 程序設(shè)計(jì)的基本概念 3
1.2.2 程序設(shè)計(jì)過(guò)程 4
1.2.3 程序設(shè)計(jì)方法 4
1.3 程序設(shè)計(jì)語(yǔ)言 7
1.3.1 機(jī)器語(yǔ)言 8
1.3.2 匯編語(yǔ)言 8
1.3.3 高級(jí)語(yǔ)言 8
1.3.4 編譯型語(yǔ)言與解釋型語(yǔ)言 8
1.3.5 C++語(yǔ)言 9
1.4 C++程序的結(jié)構(gòu) 9
1.4.1 注釋 9
1.4.2 預(yù)處理指示 9
1.4.3 以函數(shù)為單位的程序結(jié)構(gòu) 10
1.4.4 以類為單位的程序結(jié)構(gòu) 11
1.5 C++程序的實(shí)現(xiàn)過(guò)程 13
習(xí)題 14
第2章 內(nèi)置數(shù)據(jù)類型與基本輸入輸出 15
2.1 數(shù)據(jù)類型概述 15
2.1.1 數(shù)據(jù)類型的基本概念 15
2.1.2 C++語(yǔ)言類型系統(tǒng)的基本特點(diǎn) 15
2.2 標(biāo)識(shí)符概述 16
2.2.1 C++語(yǔ)言中的基本記號(hào) 16
2.2.2 標(biāo)識(shí)符 17
2.3 常量和變量 18
2.3.1 變量和變量的聲明 18
2.3.2 常量和常量的聲明 19
2.4 內(nèi)置數(shù)據(jù)類型 20
2.4.1 內(nèi)置數(shù)據(jù)類型概述 20
2.4.2 字符類型常量和變量 21
2.4.3 整數(shù)類型常量和變量 22
2.4.4 浮點(diǎn)類型常量和變量 23
2.4.5 布爾類型常量和變量 23
2.4.6 字符串類型常量和變量 24
2.5 操作符與表達(dá)式 24
2.5.1 操作符與表達(dá)式的基本概念 24
2.5.2 各種操作符和表達(dá)式詳解 26
2.6 類型之間的關(guān)系 29
2.6.1 隱式類型轉(zhuǎn)換 30
2.6.2 顯式(強(qiáng)制)類型轉(zhuǎn)換 30
2.7 標(biāo)準(zhǔn)庫(kù)的使用和簡(jiǎn)單的輸入輸出 31
2.7.1 輸出 31
2.7.2 輸入 31
2.8 應(yīng)用舉例 32
習(xí)題 32
第3章 語(yǔ)句與基本控制結(jié)構(gòu) 34
3.1 語(yǔ)句及分類 34
3.1.1 聲明語(yǔ)句 34
3.1.2 表達(dá)式語(yǔ)句 35
3.1.3 轉(zhuǎn)移語(yǔ)句 35
3.1.4 塊語(yǔ)句 36
3.1.5 空語(yǔ)句 37
3.2 選擇結(jié)構(gòu) 37
3.2.1 三種基本控制結(jié)構(gòu) 37
3.2.2 if語(yǔ)句 38
3.2.3 switch語(yǔ)句 40
3.3 循環(huán)結(jié)構(gòu) 41
3.3.1 while語(yǔ)句 42
3.3.2 do-while語(yǔ)句 43
3.3.3 for語(yǔ)句 43
3.3.4 循環(huán)中的break語(yǔ)句 44
3.3.5 continue語(yǔ)句 45
3.4 應(yīng)用舉例 46
習(xí)題 48
第4章 函數(shù) 51
4.1 概述 51
4.2 函數(shù)定義與函數(shù)原型 53
4.2.1 函數(shù)定義 53
4.2.2 函數(shù)原型 54
4.3 函數(shù)調(diào)用與參數(shù)傳遞 55
4.3.1 函數(shù)調(diào)用 55
4.3.2 參數(shù)傳遞 57
4.4 標(biāo)識(shí)符的作用域 62
4.4.1 作用域的基本概念 62
4.4.2 作用域的具體規(guī)則 63
4.4.3 變量的聲明與定義 64
4.4.4 名字空間 65
4.5 變量的生命期 66
4.6 預(yù)處理指示 69
4.6.1 文件包含 69
4.6.2 宏定義 69
4.6.3 條件編譯 70
4.7 標(biāo)準(zhǔn)庫(kù)函數(shù) 70
4.8 函數(shù)的接口設(shè)計(jì)和注釋 71
4.8.1 前置條件和后置條件 71
4.8.2 函數(shù)的注釋 71
4.8.3 函數(shù)的接口與實(shí)現(xiàn) 71
4.8.4 函數(shù)接口的設(shè)計(jì) 72
4.9 遞歸 73
4.9.1 什么是遞歸 73
4.9.2 遞歸的實(shí)現(xiàn) 74
4.9.3 漢諾塔問(wèn)題 75
4.10 應(yīng)用舉例 76
習(xí)題 77
第5章 枚舉、結(jié)構(gòu)與類 79
5.1 簡(jiǎn)單數(shù)據(jù)類型與構(gòu)造式數(shù)據(jù)類型 79
5.2 枚舉類型 79
5.3 結(jié)構(gòu)類型 81
5.3.1 結(jié)構(gòu)類型的定義及其變量的聲明和使用 81
5.3.2 結(jié)構(gòu)變量的整體操作 83
5.3.3 層次結(jié)構(gòu) 84
5.3.4 匿名結(jié)構(gòu)類型 85
5.4 抽象、封裝與信息隱藏 85
5.4.1 抽象 85
5.4.2 數(shù)據(jù)封裝與隱藏 86
5.5 類與對(duì)象 89
5.5.1 類 89
5.5.2 對(duì)象的創(chuàng)建 94
5.5.3 對(duì)象的初始化 94
5.6 關(guān)于面向?qū)ο蟪绦蛟O(shè)計(jì)的若干基本問(wèn)題 98
5.6.1 面向過(guò)程與面向?qū)ο蟆?8
5.6.2 術(shù)語(yǔ) 102
5.7 應(yīng)用舉例 102
習(xí)題 105
第6章 數(shù)組與指針 107
6.1 數(shù)組類型 107
6.1.1 一維數(shù)組 107
6.1.2 二維數(shù)組 113
6.2 指針類型 120
6.2.1 基本概念 120
6.2.2 指針常量與指針變量 121
6.2.3 指針的運(yùn)用 124
6.3 指針類型與數(shù)組 128
6.3.1 通過(guò)指針引用數(shù)組元素 128
6.3.2 數(shù)組作函數(shù)參數(shù)的進(jìn)一步討論 131
6.3.3 動(dòng)態(tài)分配內(nèi)存 133
6.3.4 二維數(shù)組與指針 136
6.4 main函數(shù)的形參 138
6.5 指向結(jié)構(gòu)變量的指針 139
6.6 對(duì)象指針 140
6.6.1 基本概念 140
6.6.2 對(duì)象的動(dòng)態(tài)創(chuàng)建和撤銷 141
6.6.3 對(duì)象的復(fù)制 142
6.7 函數(shù)指針 143
6.8 應(yīng)用舉例 144
習(xí)題 149
第7章 字符串 151
7.1 C風(fēng)格字符串 151
7.1.1 字符串常量 151
7.1.2 字符數(shù)組 151
7.2 C字符串操作 153
7.2.1 獲得字符串長(zhǎng)度 153
7.2.2 C字符串的復(fù)制 153
7.2.3 C字符串的比較 154
7.2.4 C字符串的連接 154
7.2.5 C字符串的類型轉(zhuǎn)換 155
7.2.6 處理單個(gè)字符 156
7.3 string對(duì)象字符串 156
7.3.1 string對(duì)象的聲明、初始化與賦值 157
7.3.2 string字符串的輸入和輸出 157
7.3.3 string字符串的長(zhǎng)度 158
7.3.4 string字符串的比較 158
7.3.5 string字符串的子串 158
7.3.6 string字符串的連接 159
7.3.7 string對(duì)象轉(zhuǎn)換成C字符串 159
7.4 應(yīng)用舉例 160
習(xí)題 161
第8章 繼承與組合 164
8.1 繼承的概念 164
8.2 C++中的繼承 165
8.2.1 基本概念 165
8.2.2 繼承實(shí)例 167
8.2.3 派生類中繼承成員函數(shù)的重定義 172
8.2.4 繼承層次中的構(gòu)造函數(shù)和析構(gòu)函數(shù) 172
8.3 組合 176
8.3.1 組合的語(yǔ)法和圖形表示 176
8.3.2 組合與構(gòu)造函數(shù)和析構(gòu)函數(shù) 177
8.3.3 組合的實(shí)例 178
8.4 繼承與組合的比較 182
8.5 多重繼承與重復(fù)繼承 182
8.5.1 多重繼承 182
8.5.2 多重繼承的構(gòu)造函數(shù) 185
8.5.3 多重繼承中存在的問(wèn)題:名字沖突 186
8.5.4 重復(fù)繼承 187
8.6 應(yīng)用舉例 189
習(xí)題 201
第9章 重載 205
9.1 函數(shù)重載 205
9.1.1 什么是函數(shù)重載 205
9.1.2 為什么要使用函數(shù)重載 209
9.1.3 使用函數(shù)重載時(shí)需要注意的問(wèn)題 209
9.2 復(fù)制構(gòu)造函數(shù) 213
9.2.1 復(fù)制構(gòu)造函數(shù)的語(yǔ)法形式 213
9.2.2 復(fù)制構(gòu)造函數(shù)的使用場(chǎng)合 213
9.3 操作符重載 224
9.3.1 C++操作符的函數(shù)特性 224
9.3.2 操作符重載的規(guī)則 224
9.3.3 類成員操作符重載 225
9.3.4 友元操作符重載 229
9.4 應(yīng)用舉例 232
習(xí)題 238
第10章 I/O流與文件 240
10.1 概述 240
10.1.1 何為I/O 240
10.1.2 應(yīng)用程序、操作系統(tǒng)與I/O 240
10.1.3 標(biāo)準(zhǔn)I/O流cin和cout 241
10.1.4 文件I/O流 242
10.2 二進(jìn)制文件I/O 245
10.2.1 文本文件I/O Vs.二進(jìn)制文件I/O 245
10.2.2 二進(jìn)制文件I/O 245
10.3 應(yīng)用舉例 248
習(xí)題 251
第11章 多態(tài)性與虛函數(shù) 252
11.1 綁定方式與多態(tài)性 252
11.1.1 基本概念 252
11.1.2 多態(tài)性的作用 253
11.2 虛函數(shù) 254
11.2.1 虛函數(shù)舉例 254
11.2.2 使用虛函數(shù)的特定版本 256
11.2.3 虛析構(gòu)函數(shù) 257
11.3 純虛函數(shù)和抽象類 258
11.3.1 純虛函數(shù) 258
11.3.2 抽象類 259
11.4 應(yīng)用舉例 259
習(xí)題 269
第12章 異常處理 271
12.1 異常處理概述 271
12.2 C++語(yǔ)言中的異常處理 272
12.2.1 throw語(yǔ)句 272
12.2.2 try塊與異常的捕獲及處理 273
12.2.3 標(biāo)準(zhǔn)庫(kù)異常類 285
12.2.4 異常說(shuō)明(exception specification) 286
12.3 應(yīng)用舉例 287
習(xí)題 298
第13章 模板 300
13.1 泛型編程概述 300
13.2 函數(shù)模板 300
13.2.1 函數(shù)模板的定義 301
13.2.2 函數(shù)模板的實(shí)例化 301
13.2.3 函數(shù)模板與重載 303
13.3 類模板 305
13.3.1 類模板的定義 306
13.3.2 類模板的實(shí)例化 309
13.3.3 模板編譯與類模板的實(shí)現(xiàn) 310
13.4 非類型模板形參 313
13.4.1 函數(shù)模板的非類型形參 313
13.4.2 類模板的非類型形參 313
13.5 應(yīng)用舉例 314
習(xí)題 326
第14章 標(biāo)準(zhǔn)模板庫(kù) 328
14.1 概述 328
14.2 迭代器 329
14.3 容器 330
14.3.1 順序容器 330
14.3.2 關(guān)聯(lián)容器 341
14.3.3 容器適配器 348
14.4 泛型算法 351
14.4.1 算法簡(jiǎn)介 351
14.4.2 算法舉例 354
14.5 應(yīng)用舉例 356
習(xí)題 364
附錄A C++保留字表 366
附錄B 標(biāo)準(zhǔn)ASCII代碼表 367
附錄C 常用數(shù)學(xué)函數(shù) 368
附錄D C++標(biāo)準(zhǔn)庫(kù)頭文件 369
附錄E 標(biāo)準(zhǔn)庫(kù)泛型算法簡(jiǎn)介 370
附錄F 主要術(shù)語(yǔ)英漢對(duì)照表 376
參考文獻(xiàn) 378