本書緊密結(jié)合C++語言的新標(biāo)準(zhǔn),以C++語言為工具講述面向?qū)ο蟪绦蛟O(shè)計方法。全書分為兩個部分:第一部分介紹C++語言基礎(chǔ)內(nèi)容及結(jié)構(gòu)化程序設(shè)計方法,包括基本類型、表達(dá)式、語句、函數(shù)、數(shù)組、指針等;第二部分介紹面向?qū)ο蟪绦蛟O(shè)計方法及C++語言中支持面向?qū)ο蟪绦蛟O(shè)計的主要機(jī)制,包括類、繼承、多態(tài)、模板、命名空間、異常處理、標(biāo)準(zhǔn)庫及泛型算法等。書中每章都包括豐富的代碼和習(xí)題,供讀者分析和練習(xí)。
本書既可作為計算機(jī)專業(yè)本科生程序設(shè)計課程的入門教材,也可以作為相關(guān)專業(yè)高年級學(xué)生面向?qū)ο蟪绦蛟O(shè)計的教材,還可供軟件開發(fā)人員參考。
本書適合作為高等院校“C++語言程序設(shè)計”課程的教堂用書,還可作為C++語言的自學(xué)或教學(xué)參考書。
(1)根據(jù)C++的最新標(biāo)準(zhǔn)編寫。(2)示例簡單實用、短小精悍且貫穿全書。(3)融入軟件工程思想。(4)詮釋經(jīng)典實例,本土化展示。
目 錄
第1章 程序設(shè)計與C++語言入門 1
1.1 程序及相關(guān)概念 1
1.1.1 計算機(jī)與用戶(人) 1
1.1.2 算法 2
1.1.3 程序 3
1.2 程序設(shè)計 3 目 錄
第1章 程序設(shè)計與C++語言入門 1
1.1 程序及相關(guān)概念 1
1.1.1 計算機(jī)與用戶(人) 1
1.1.2 算法 2
1.1.3 程序 3
1.2 程序設(shè)計 3
1.2.1 程序設(shè)計的基本概念 3
1.2.2 程序設(shè)計過程 4
1.2.3 程序設(shè)計方法 4
1.3 程序設(shè)計語言 7
1.3.1 機(jī)器語言 8
1.3.2 匯編語言 8
1.3.3 高級語言 8
1.3.4 編譯型語言與解釋型語言 8
1.3.5 C++語言 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++程序的實現(xiàn)過程 13
習(xí)題 14
第2章 內(nèi)置數(shù)據(jù)類型與基本輸入輸出 15
2.1 數(shù)據(jù)類型概述 15
2.1.1 數(shù)據(jù)類型的基本概念 15
2.1.2 C++語言類型系統(tǒng)的基本特點(diǎn) 15
2.2 標(biāo)識符概述 16
2.2.1 C++語言中的基本記號 16
2.2.2 標(biāo)識符 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)庫的使用和簡單的輸入輸出 31
2.7.1 輸出 31
2.7.2 輸入 31
2.8 應(yīng)用舉例 32
習(xí)題 32
第3章 語句與基本控制結(jié)構(gòu) 34
3.1 語句及分類 34
3.1.1 聲明語句 34
3.1.2 表達(dá)式語句 35
3.1.3 轉(zhuǎn)移語句 35
3.1.4 塊語句 36
3.1.5 空語句 37
3.2 選擇結(jié)構(gòu) 37
3.2.1 三種基本控制結(jié)構(gòu) 37
3.2.2 if語句 38
3.2.3 switch語句 40
3.3 循環(huán)結(jié)構(gòu) 41
3.3.1 while語句 42
3.3.2 do-while語句 43
3.3.3 for語句 43
3.3.4 循環(huán)中的break語句 44
3.3.5 continue語句 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)識符的作用域 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)庫函數(shù) 70
4.8 函數(shù)的接口設(shè)計和注釋 71
4.8.1 前置條件和后置條件 71
4.8.2 函數(shù)的注釋 71
4.8.3 函數(shù)的接口與實現(xiàn) 71
4.8.4 函數(shù)接口的設(shè)計 72
4.9 遞歸 73
4.9.1 什么是遞歸 73
4.9.2 遞歸的實現(xiàn) 74
4.9.3 漢諾塔問題 75
4.10 應(yīng)用舉例 76
習(xí)題 77
第5章 枚舉、結(jié)構(gòu)與類 79
5.1 簡單數(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 類與對象 89
5.5.1 類 89
5.5.2 對象的創(chuàng)建 94
5.5.3 對象的初始化 94
5.6 關(guān)于面向?qū)ο蟪绦蛟O(shè)計的若干基本問題 98
5.6.1 面向過程與面向?qū)ο蟆?8
5.6.2 術(shù)語 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 通過指針引用數(shù)組元素 128
6.3.2 數(shù)組作函數(shù)參數(shù)的進(jìn)一步討論 131
6.3.3 動態(tài)分配內(nèi)存 133
6.3.4 二維數(shù)組與指針 136
6.4 main函數(shù)的形參 138
6.5 指向結(jié)構(gòu)變量的指針 139
6.6 對象指針 140
6.6.1 基本概念 140
6.6.2 對象的動態(tài)創(chuàng)建和撤銷 141
6.6.3 對象的復(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 獲得字符串長度 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 處理單個字符 156
7.3 string對象字符串 156
7.3.1 string對象的聲明、初始化與賦值 157
7.3.2 string字符串的輸入和輸出 157
7.3.3 string字符串的長度 158
7.3.4 string字符串的比較 158
7.3.5 string字符串的子串 158
7.3.6 string字符串的連接 159
7.3.7 string對象轉(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 繼承實例 167
8.2.3 派生類中繼承成員函數(shù)的重定義 172
8.2.4 繼承層次中的構(gòu)造函數(shù)和析構(gòu)函數(shù) 172
8.3 組合 176
8.3.1 組合的語法和圖形表示 176
8.3.2 組合與構(gòu)造函數(shù)和析構(gòu)函數(shù) 177
8.3.3 組合的實例 178
8.4 繼承與組合的比較 182
8.5 多重繼承與重復(fù)繼承 182
8.5.1 多重繼承 182
8.5.2 多重繼承的構(gòu)造函數(shù) 185
8.5.3 多重繼承中存在的問題:名字沖突 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ù)重載時需要注意的問題 209
9.2 復(fù)制構(gòu)造函數(shù) 213
9.2.1 復(fù)制構(gòu)造函數(shù)的語法形式 213
9.2.2 復(fù)制構(gòu)造函數(shù)的使用場合 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++語言中的異常處理 272
12.2.1 throw語句 272
12.2.2 try塊與異常的捕獲及處理 273
12.2.3 標(biāo)準(zhǔn)庫異常類 285
12.2.4 異常說明(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ù)模板的實例化 301
13.2.3 函數(shù)模板與重載 303
13.3 類模板 305
13.3.1 類模板的定義 306
13.3.2 類模板的實例化 309
13.3.3 模板編譯與類模板的實現(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)模板庫 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 算法簡介 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)庫頭文件 369
附錄E 標(biāo)準(zhǔn)庫泛型算法簡介 370
附錄F 主要術(shù)語英漢對照表 376
參考文獻(xiàn) 378