本書采用C++語言來講解面向對象編程,在介紹C++語法的基礎上,還引入了數據結構、設計模式等內容。全書篇章結構精良、組織有序、概念清晰,圍繞教學需求展開內容,程序文檔形式一致,為學生日后在學術界和專業(yè)領域承擔程序設計方面的工作打好了基礎。
出版者的話
譯者序
前言
第1章 計算機與程序設計語言導論 1
1.1 計算機系統(tǒng) 1
1.1.1 計算機硬件 1
1.1.2 計算機軟件 4
1.2 計算機語言 4
1.2.1 機器語言 4
1.2.2 符號語言 5
1.2.3 高級語言 5
1.3 計算機語言范式 5
1.3.1 面向過程的程序設計語言范式 6
1.3.2 面向對象的程序設計語言范式 7
1.3.3 函數式程序設計語言范式 7
1.3.4 邏輯式程序設計語言范式 8
1.3.5 C++語言中包含的范式 8
1.4 程序設計 8
1.4.1 理解問題 9
1.4.2 開發(fā)解決方案 9
1.5 程序開發(fā) 11
1.5.1 編寫和編輯程序 11
1.5.2 編譯程序 12
1.5.3 鏈接程序 12
1.5.4 執(zhí)行程序 12
1.6 測試 12
1.6.1 設計測試數據 12
1.6.2 程序錯誤 13
本章小結 13
思考題 14
第2章 C++程序設計基礎 16
2.1 C++程序 16
2.1.1 第一個程序 16
2.1.2 第二個程序 20
2.2 變量、值和常量 22
2.2.1 變量 22
2.2.2 值 22
2.2.3 常量 26
2.3 C++程序的組成部分 26
2.3.1 標記符 27
2.3.2 注釋 29
2.4 數據類型 30
2.4.1 整數類型 30
2.4.2 字符類型 36
2.4.3 布爾類型 38
2.4.4 浮點類型 39
2.4.5 void類型 40
2.4.6 字符串類 41
本章小結 42
思考題 42
編程題 47
第3章 表達式和語句 48
3.1 表達式 48
3.1.1 基本表達式 49
3.1.2 一元表達式 51
3.1.3 乘法類表達式 52
3.1.4 加法類表達式 54
3.1.5 賦值表達式 55
3.1.6 左值和右值的概念 57
3.2 類型轉換 57
3.2.1 隱式類型轉換 58
3.2.2 顯式類型轉換(強制轉換) 61
3.3 表達式的求值順序 62
3.3.1 優(yōu)先級 62
3.3.2 結合性 65
3.4 上溢和下溢 66
3.4.1 整數的上溢和下溢 66
3.4.2 浮點數的上溢和下溢 68
3.5 格式化數據 69
3.5.1 用于輸出的操作符 69
3.5.2 用于輸入的操作符 74
3.6 語句 75
3.6.1 聲明語句 76
3.6.2 表達式語句 77
3.6.3 空語句 78
3.6.4 復合語句 78
3.6.5 返回語句 79
3.7 程序設計 80
3.7.1 提取浮點數的整數部分和小數部分 80
3.7.2 提取整數的個位數 82
3.7.3 把時間分解為時分秒 83
3.7.4 計算平均值和偏差 84
本章小結 86
思考題 86
編程題 90
第4章 選擇結構 92
4.1 簡單選擇結構 92
4.1.1 關系和等性表達式 92
4.1.2 單分支選擇結構:if語句 93
4.1.3 雙分支選擇結構:if-else語句 97
4.1.4 多分支選擇結構 101
4.2 復雜條件決策 103
4.2.1 邏輯表達式 104
4.2.2 邏輯表達式的應用 105
4.3 基于特定值的選擇結構 111
4.3.1 switch語句 111
4.4 條件表達式 117
4.4.1 條件表達式的結構 117
4.4.2 比較 118
4.5 程序設計 119
4.5.1 學生成績 119
4.5.2 計算給定收入的稅款 122
4.5.3 日期編號 124
本章小結 126
思考題 126
編程題 128
第5章 循環(huán)結構 130
5.1 概述 130
5.1.1 前綴表達式和后綴表達式 130
5.1.2 循環(huán)語句 132
5.2 while語句 132
5.2.1 計數器控制while語句 133
5.2.2 事件控制while語句 138
5.2.3 while語句分析 144
5.3 for語句 144
5.3.1 循環(huán)頭 145
5.3.2 循環(huán)體 145
5.4 do-while語句 148
5.4.1 事件控制的循環(huán)結構 149
5.4.2 do-while循環(huán)結構的分析 151
5.5 有關循環(huán)結構的詳細信息 152
5.5.1 三種循環(huán)結構的比較 152
5.5.2 嵌套循環(huán) 152
5.6 其他相關語句 155
5.6.1 return語句 155
5.6.2 break語句 157
5.6.3 continue語句 157
5.6.4 goto語句 158
5.7 程序設計 158
5.7.1 累加和與累乘積 158
5.7.2 階乘 160
5.7.3 乘冪 162
5.7.4 最小值和最大值 164
5.7.5 any或者all查詢 166
本章小結 168
思考題 169
編程題 171
第6章 函數 173
6.1 概述 173
6.1.1 函數的優(yōu)點 174
6.1.2 函數的定義、聲明和調用 174
6.1.3 庫函數和用戶自定義函數 176
6.2 庫函數 177
6.2.1 數學函數 177
6.2.2 字符函數 181
6.2.3 處理時間 183
6.2.4 隨機數生成 184
6.3 用戶自定義函數 186
6.3.1 函數的四種類型 186
6.3.2 使用聲明 192
6.4 數據交換 194
6.4.1 傳遞數據 195
6.4.2 返回值 199
6.4.3 綜合示例 200
6.5 有關參數的進一步討論 203
6.5.1 默認參數 203
6.5.2 函數重載 204
6.6 作用域和生命周期 206
6.6.1 作用域 206
6.6.2 生命周期 211
6.7 程序設計 213
6.7.1 固定投資的未來價值 214
6.7.2 周期性投資的未來價值 217
本章小結 221
思考題 221
編程題 224
第7章 用戶自定義類型:類 227
7.1 概述 227
7.1.1 現實生活中的類型和實例 227
7.1.2 程序中的類和對象 228
7.1.3 比較 228
7.2 類 229
7.2.1 一個示例 229
7.2.2 類定義 231
7.2.3 成員函數定義 233
7.2.4 內聯函數 234
7.2.5 應用程序 235
7.2.6 結構 235
7.3 構造函數和析構函數 236
7.3.1 構造函數 236
7.3.2 析構函數 238
7.3.3 創(chuàng)建和銷毀對象 239
7.3.4 必需的成員函數 239
7.4 實例成員 245
7.4.1 實例數據成員 245
7.4.2 實例成員函數 245
7.4.3 類不變式 249
7.5 靜態(tài)成員 252
7.5.1 靜態(tài)數據成員 252
7.5.2 靜態(tài)成員函數 253
7.6 面向對象的程序設計 259
7.6.1 獨立文件 259
7.6.2 獨立編譯 260
7.6.3 防止多重包含 265
7.6.4 封裝 265
7.7 設計類 266
7.7.1 表示分數的類 267
7.7.2 表示時間的類 272
本章小結 276
思考題 276
編程題 278
第8章 數組 281
8.1 一維數組 281
8.1.1 數組屬性 281
8.1.2 聲明、分配和初始化 282
8.1.3 訪問數組元素 284
8.2 有關數組的進一步討論 290
8.2.1 訪問操作 290
8.2.2 修改操作 293
8.2.3 使用帶數組的函數 295
8.2.4 并行數組 298
8.3 多維數組 302
8.3.1 二維數組 302
8.3.2 三維數組 306
8.4 程序設計 307
8.4.1 頻率數組和直方圖 307
8.4.2 線性轉換 309
本章小結 312
思考題 313
編程題 314
第9章 引用、指針和內存管理 316
9.1 引用 316
9.1.1 概述 316
9.1.2 檢索值 318
9.1.3 修改值 319
9.1.4 引用的應用 320
9.2 指針 325
9.2.1 地址 325
9.2.2 指針類型和指針變量 327
9.2.3 檢索值 329
9.2.4 使用const修飾符 329
9.2.5 指向指針的指針 331
9.2.6 兩種特殊的指針 331
9.2.7 指針的應用 332
9.3 數組和指針 336
9.3.1 一維數組和指針 336
9.3.2 二維數組和指針 342
9.4 內存管理 344
9.4.1 代碼內存 344
9.4.2 靜態(tài)內存 344
9.4.3 棧內存 345
9.4.4 堆內存 346
9.4.5 二維數組 349
9.5 程序設計 352
9.5.1 課程類 352
9.5.2 矩陣類 357
本章小結 362
思考題 362
編程題 366
第10章 字符串 368
10.1 C字符串 368
10.1.1 C字符串庫 369
10.1.2 C字符串的操作 369
10.2 C++字符串類 381
10.2.1 總體設計思路 382
10.2.2 C++字符串庫 383
10.2.3 C++字符串定義的操作 384
10.3 程序設計 402
10.3.1 四個自定義函數 402
10.3.2 數值進制編碼系統(tǒng)的轉換 404
本章小結 409
思考題 409
編程題 410
第11章 類之間的關系 412
11.1 繼承關系 412
11.1.1 總體思路 412
11.1.2 公共繼承 413
11.1.3 有關公共繼承的進一步討論 424
11.1.4 繼承的三種類型 430
11.2 關聯關系 431
11.2.1 聚合關系 432
11.2.2 組合關系 435
11.3 依賴關系 438
11.3.1 UML圖 439
11.3.2 一個綜合的示例 439
11.4 程序設計 443
11.4.1 詞法分析器類 443
11.4.2 注冊 446
本章小結 454
思考題 455
編程題 457
第12章 多態(tài)性和其他問題 460
12.1 多態(tài)性 460
12.1.1 多態(tài)性的條件 461
12.1.2 構造函數和析構函數 464
12.1.3 綁定 470
12.1.4 運行時類型信息 471
12.2 其他問題 472
12.2.1 抽象類 472
12.2.2 多重繼承 482
本章小結 494
思考題 494
編程題 495
第13章 運算符重載 497
13.1 對象的三種角色 497
13.1.1 宿主對象 497
13.1.2 參數對象 499
13.1.3 返回對象 500
13.2 重載原理 501
13.2.1 運算符的三種類別 502
13.2.2 重載的規(guī)則 503
13.2.3 運算符函數 504
13.3 重載為成員函數 504
13.3.1 一元運算符 504
13.3.2 二元運算符 507
13.3.3 其他運算符 511
13.4 重載為非成員函數 517
13.4.1 二元算術運算符 517
13.4.2 等性運算符和關系運算符 518
13.4.3 提取運算符和插入運算符 519
13.5 類型轉換 520
13.5.1 基本類型轉換為類類型 520
13.5.2 類類型轉換為基本類型 521
13.6 設計類 521
13.6.1 帶重載運算符的Fraction類 521
13.6.2 Date類 530
13.6.3 多項式 536
本章小結 543
思考題 543
編程題 544
第14章 異常處理 546
14.1 概述 546
14.1.1 錯誤處理的傳統(tǒng)方法 546
14.1.2 異常處理的方法 551
14.1.3 異常規(guī)范 558
14.1.4 棧展開 559
14.2 類中的異常 560
14.2.1 構造函數中的異常 561
14.2.2 析構函數中的異常 567
14.3 標準異常類 567
14.3.1 邏輯錯誤 568
14.3.2 運行時錯誤 569
14.3.3 其他五個類 570
14.3.4 使用標準異常類 571
本章小結 572
思考題 572
編程題 575
第15章 泛型編程:模板 576
15.1 函數模板 576
15.1.1 使用函數族 576
15.1.2 使用函數模板 577
15.1.3 其他函數模板版本 580
15.1.4 接口文件和應用程序文件 583
15.2 類模板 584
15.2.1 接口和實現 584
15.2.2 編譯 587
15.2.3 其他問題 591
15.2.4 繼承 592
15.2.5 回顧 592
本章小結 593
思考題 593
編程題 594
第16章 輸入/輸出流 595
16.1 概述 595
16.1.1 流 596
16.1.2 數據表示 596
16.1.3 流類 598
16.2 控制臺流 599
16.2.1 控制臺對象 599
16.2.2 流狀態(tài) 600
16.2.3 輸入/輸出 602
16.3 文件流 606
16.3.1 文件輸入/輸出 606
16.3.2 文件打開模式 609
16.3.3 其他成員函數 614
16.3.4 順序訪問與隨機訪問 616
16.3.5 二進制輸入/輸出 619
16.4 字符串流 625
16.4.1 實例化 626
16.4.2 應用:適配器 627
16.5 格式化數據 629
16.5.1 直接使用標志、字段和變量 629
16.5.2 預定義操作符 632
16.5.3 操作符定義 634
16.6 程序設計 638
16.6.1 合并兩個已排序文件 638
16.6.2 對稱密碼 640
本章小結 644
思考題 645
編程題 645
第17章 遞歸 647
17.1 概述 647
17.1.1 循環(huán)與遞歸 647
17.1.2 遞歸算法 649
17.1.3 尾部遞歸函數和非尾部遞歸函數 657
17.1.4 輔助函數 658
17.2 遞歸排序和查找 660
17.2.1 快速排序 660
17.2.2 二分查找法 664
17.2.3 漢諾塔 667
17.3 程序設計 670
17.3.1 字符串排列 670
17.3.2 素數 672
本章小結 675
思考題 675
編程題 677
在線章節(jié)
第18章數據結構入門
第19章標準模板庫
第20章設計模式
附錄AUnicode
附錄B進制編碼系統(tǒng)
附錄CC++表達式和運算符
附錄D位運算
附錄E位域
附錄F預處理
附錄G名稱空間
附錄H比率
附錄I時間
附錄JLambda表達式
附錄K正則表達式
附錄L智能指針
附錄M隨機數生成
附錄N引用
附錄O移動與復制
附錄PC++11概述
附錄Q統(tǒng)一建模語言
附錄R位集