C++ Primer Plus(第6版)中文版(暢銷30年C++必讀經典教程全新升級,蔡學

C++ Primer Plus(第6版)中文版(暢銷30年C++必讀經典教程全新升級,蔡學 pdf epub mobi txt 電子書 下載 2025

[美] Stephen Prata 著
圖書標籤:
  • C++
  • 編程
  • 入門
  • 教程
  • 蔡學
  • 中文版
  • 第6版
  • 經典
  • 暢銷書
  • 學習
想要找書就要到 靜思書屋
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
店鋪: 博遠慧達圖書專營店
齣版社: 人民郵電齣版社
ISBN:9787115279460
商品編碼:12109131952
包裝:平裝-膠訂
齣版時間:2012-07-01

具體描述

溫馨提示: 我店與齣版社聯袂推齣特價館配圖書,旨在為廣大讀者提供低價格,優品質的書籍。 請認準書背封底直徑為1厘米方型或圓型的小孔,此為正版館配圖書的標誌。 極少數圖書可能略有磨損但不影響您閱讀!個彆圖書的光盤為原盤復刻。 如閱讀過程中發現圖書光盤無法正常讀取,本店會積極協助您網傳處理。

基本信息

書名:C++ Primer Plus(第6版)中文版(暢銷30年C++必讀經典教程全新升級,蔡學鏞、孟岩、高博傾力推薦)

定價:99.00元

售價:58.41元,便宜40.59元,摺扣59

作者:Stephen Prata

齣版社:人民郵電齣版社

齣版日期:2012-07-01

ISBN:9787115279460

字數:

頁碼:

版次:1

裝幀:平裝-膠訂

開本:16開

商品重量:1.421kg

編輯推薦


一本經久不衰的C 暢銷經典教程;首本支持C 11新標準的程序設計圖書。

它被譽為“開發人員學習C 的必備教程,沒有之一”! 網站“Language”類銷售排名第三的超級暢銷書,之前版本在美國銷售超10萬!

《C Primer Plus(第6版)中文版》可以說是一本麵嚮從未學習過C語言甚至是從未學習過編程的人的入門書籍,它的首章從基礎內容講起,先介紹瞭傳統編程的規則,後麵纔著重講解有關麵嚮對象——C 的精髓之一——的有關內容。整個書的結構安排較為閤理,難度爬升較慢。

如果你是一個從未學過C語言(或者壓根沒學會C)的讀者,那麼,我相信這本書更適閤你。

內容提要


C 是在 C 語言基礎上開發的一種集麵嚮對象編程、泛型編程和過程化編程於一體的編程語言,是C語言的超集。《C Primer Plus(第6版)中文版》是根據2003年的ISO/ANSI C 標準編寫的,通過大量短小精悍的程序詳細而全麵地闡述瞭 C 的基本概念和技術,並專闢一章介紹瞭C 11新增的功能。

全書分18章和10個附錄。分彆介紹瞭C 程序的運行方式、基本數據類型、復閤數據類型、循環和關係錶達式、分支語句和邏輯運算符、函數重載和函數模闆、內存模型和名稱空間、類的設計和使用、多態、虛函數、動態內存分配、繼承、代碼重用、友元、異常處理技術、string類和標準模闆庫、輸入/輸齣、C 11新增功能等內容。

《C Primer Plus(第6版)中文版》針對C 初學者,書中從C語言基礎知識開始介紹,然後在此基礎上詳細闡述C 新增的特性,因此不要求讀者有C語言方麵的背景知識。本書可作為高等院校教授C 課程的教材,也可供初學者自學C 時使用。

目錄




第1章 預備知識 1
1.1 C 簡介 1
1.2 C 簡史 2
1.2.1 C語言 2
1.2.2 C語言編程原理 2
1.2.3 麵嚮對象編程 3
1.2.4 C 和泛型編程 4
1.2.5 C 的起源 4
1.3 可移植性和標準 5
1.3.1 C 的發展 6
1.3.2 本書遵循的C 標準 6
1.4 程序創建的技巧 6
1.4.1 創建源代碼文件 7
1.4.2 編譯和鏈接 8
1.5 總結 10

第2章 開始學習C 12
2.1 進入C 12
2.1.1 main()函數 13
2.1.2 C 注釋 15
2.1.3 C 預處理器和iostream文件 16
2.1.4 頭文件名 16
2.1.5 名稱空間 17
2.1.6 使用cout進行C 輸齣 18
2.1.7 C 源代碼的格式化 19
2.2 C 語句 21
2.2.1 聲明語句和變量 21
2.2.2 賦值語句 22
2.2.3 cout的新花樣 23
2.3 其他C 語句 23
2.3.1 使用cin 24
2.3.2 使用cout進行拼接 24
2.3.3 類簡介 25
2.4 函數 26
2.4.1 使用有返迴值的函數 26
2.4.2 函數變體 29
2.4.3 用戶定義的函數 29
2.4.4 用戶定義的有返迴值的函數 32
2.4.5 在多函數程序中使用using編譯指令 33
2.5 總結 34
2.6 復習題 35
2.7 編程練習 35

第3章 處理數據 37
3.1 簡單變量 37
3.1.1 變量名 38
3.1.2 整型 39
3.1.3 整型short、int、long和long long 39
3.1.4 無符號類型 43
3.1.5 選擇整型類型 45
3.1.6 整型字麵值 45
3.1.7 C 如何確定常量的類型 47
3.1.8 char類型:字符和小整數 47
3.1.9 bool類型 53
3.2 const限定符 54
3.3 浮點數 55
3.3.1 書寫浮點數 55
3.3.2 浮點類型 56
3.3.3 浮點常量 58
3.3.4 浮點數的優缺點 58
3.4 C 算術運算符 59
3.4.1 運算符優先級和結閤性 60
3.4.2 除法分支 60
3.4.3 求模運算符 61
3.4.4 類型轉換 62
3.4.5 C 11中的auto聲明 66
3.5 總結 67
3.6 復習題 67
3.7 編程練習 68

第4章 復閤類型 70
4.1 數組 70
4.1.1 程序說明 72
4.1.2 數組的初始化規則 73
4.1.3 C 11數組初始化方法 73
4.2 字符串 74
4.2.1 拼接字符串常量 75
4.2.2 在數組中使用字符串 76
4.2.3 字符串輸入 77
4.2.4 每次讀取一行字符串輸入 78
4.2.5 混閤輸入字符串和數字 81
4.3 string類簡介 82
4.3.1 C 11字符串初始化 83
4.3.2 賦值、拼接和附加 83
4.3.3 string類的其他操作 84
4.3.4 string類I/O 86
4.3.5 其他形式的字符串字麵值 87
4.4 結構簡介 88
4.4.1 在程序中使用結構 89
4.4.2 C 11結構初始化 91
4.4.3 結構可以將string類作為成員嗎 91
4.4.4 其他結構屬性 91
4.4.5 結構數組 93
4.4.6 結構中的位字段 94
4.5 共用體 94
4.6 枚舉 95
4.6.1 設置枚舉量的值 97
4.6.2 枚舉的取值範圍 97
4.7 指針和自由存儲空間 97
4.7.1 聲明和初始化指針 100
4.7.2 指針的危險 101
4.7.3 指針和數字 102
4.7.4 使用new來分配內存 102
4.7.5 使用delete釋放內存 104
4.7.6 使用new來創建動態數組 104
4.8 指針、數組和指針算術 106
4.8.1 程序說明 107
4.8.2 指針小結 109
4.8.3 指針和字符串 111
4.8.4 使用new創建動態結構 114
4.8.5 自動存儲、靜態存儲和動態存儲 117
4.9 類型組閤 118
4.10 數組的替代品 120
4.10.1 模闆類vector 120
4.10.2 模闆類array(C 11) 120
4.10.3 比較數組、vector對象和array對象 120
4.11 總結 122
4.12 復習題 123
4.13 編程練習 123

第5章 循環和關係錶達式 125
5.1 for循環 125
5.1.1 for循環的組成部分 126
5.1.2 迴到for循環 131
5.1.3 修改步長 132
5.1.4 使用for循環訪問字符串 133
5.1.5 遞增運算符( )和遞減運算符(--) 133
5.1.6 副作用和順序點 134
5.1.7 前綴格式和後綴格式 135
5.1.8 遞增/遞減運算符和指針 135
5.1.9 組閤賦值運算符 136
5.1.10 復閤語句(語句塊) 136
5.1.11 其他語法技巧——逗號運算符 138
5.1.12 關係錶達式 140
5.1.13 賦值、比較和可能犯的錯誤 141
5.1.14 C-風格字符串的比較 142
5.1.15 比較string類字符串 144
5.2 while循環 145
5.2.1 for與while 147
5.2.2 等待一段時間:編寫延時循環 148
5.3 do while循環 150
5.4 基於範圍的for循環(C 11) 152
5.5 循環和文本輸入 152
5.5.1 使用原始的cin進行輸入 152
5.5.2 使用cin.get(char)進行補救 153
5.5.3 使用哪一個cin.get() 154
5.5.4 文件尾條件 155
5.5.5 另一個cin.get()版本 157
5.6 嵌套循環和二維數組 159
5.6.1 初始化二維數組 160
5.6.2 使用二維數組 160
5.7 總結 162
5.8 復習題 163
5.9 編程練習 163

第6章 分支語句和邏輯運算符 165
6.1 if語句 165
6.1.1 if else語句 167
6.1.2 格式化if else語句 168
6.1.3 if else if else結構 169
6.2 邏輯錶達式 170
6.2.1 邏輯OR運算符:|| 171
6.2.2 邏輯AND運算符:&& 172
6.2.3 用&&來設置取值範圍 174
6.2.4 邏輯NOT運算符:! 175
6.2.5 邏輯運算符細節 176
6.2.6 其他錶示方式 177
6.3 字符函數庫cctype 177
6.4 ?:運算符 179
6.5 switch語句 180
6.5.1 將枚舉量用作標簽 183
6.5.2 switch和if else 184
6.6 break和continue語句 185
6.7 讀取數字的循環 187
6.8 簡單文件輸入/輸齣 190
6.8.1 文本I/O和文本文件 190
6.8.2 寫入到文本文件中 191
6.8.3 讀取文本文件 194
6.9 總結 197
6.10 復習題 198
6.11 編程練習 199

第7章 函數——C 的編程模塊 202
7.1 復習函數的基本知識 202
7.1.1 定義函數 203
7.1.2 函數原型和函數調用 205
7.2 函數參數和按值傳遞 207
7.2.1 多個參數 208
7.2.2 另外一個接受兩個參數的函數 210
7.3 函數和數組 212
7.3.1 函數如何使用指針來處理數組 213
7.3.2 將數組作為參數意味著什麼 213
7.3.3 更多數組函數示例 215
7.3.4 使用數組區間的函數 220
7.3.5 指針和const 221
7.4 函數和二維數組 224
7.5 函數和C-風格字符串 225
7.5.1 將C-風格字符串作為參數的函數 225
7.5.2 返迴C-風格字符串的函數 227
7.6 函數和結構 228
7.6.1 傳遞和返迴結構 228
7.6.2 另一個處理結構的函數示例 230
7.6.3 傳遞結構的地址 234
7.7 函數和string對象 235
7.8 函數與array對象 236
7.9 遞歸 238
7.9.1 包含一個遞歸調用的遞歸 239
7.9.2 包含多個遞歸調用的遞歸 240
7.10 函數指針 241
7.10.1 函數指針的基礎知識 241
7.10.2 函數指針示例 243
7.10.3 深入探討函數指針 244
7.10.4 使用typedef進行簡化 248
7.11 總結 248
7.12 復習題 249
7.13 編程練習 250

第8章 函數探幽 253
8.1 C 內聯函數 253
8.2 引用變量 255
8.2.1 創建引用變量 256
8.2.2 將引用用作函數參數 258
8.2.3 引用的屬性和特彆之處 260
8.2.4 將引用用於結構 263
8.2.5 將引用用於類對象 268
8.2.6 對象、繼承和引用 271
8.2.7 何時使用引用參數 274
8.3 默認參數 274
8.4 函數重載 276
8.4.1 重載示例 278
8.4.2 何時使用函數重載 280
8.5 函數模闆 281
8.5.1 重載的模闆 283
8.5.2 模闆的局限性 285
8.5.3 顯式具體化 285
8.5.4 實例化和具體化 288
8.5.5 編譯器選擇使用哪個函數版本 289
8.5.6 模闆函數的發展 295
8.6 總結 297
8.7 復習題 297
8.8 編程練習 298

第9章 內存模型和名稱空間 300
9.1 單獨編譯 300
9.2 存儲持續性、作用域和鏈接性 304
9.2.1 作用域和鏈接 305
9.2.2 自動存儲持續性 305
9.2.3 靜態持續變量 309
9.2.4 靜態持續性、外部鏈接性 310
9.2.5 靜態持續性、內部鏈接性 313
9.2.6 靜態存儲持續性、無鏈接性 315
9.2.7 說明符和限定符 317
9.2.8 函數和鏈接性 318
9.2.9 語言鏈接性 319
9.2.10 存儲方案和動態分配 319
9.3 名稱空間 324
9.3.1 傳統的C 名稱空間 324
9.3.2 新的名稱空間特性 325
9.3.3 名稱空間示例 331
9.3.4 名稱空間及其前途 334
9.4 總結 335
9.5 復習題 335
9.6 編程練習 338

第10章 對象和類 340
10.1 過程性編程和麵嚮對象編程 340
10.2 抽象和類 341
10.2.1 類型是什麼 341
10.2.2 C 中的類 342
10.2.3 實現類成員函數 345
10.2.4 使用類 349
10.2.5 修改實現 350
10.2.6 小結 351
10.3 類的構造函數和析構函數 352
10.3.1 聲明和定義構造函數 353
10.3.2 使用構造函數 354
10.3.3 默認構造函數 354
10.3.4 析構函數 355
10.3.5 改進Stock類 356
10.3.6 構造函數和析構函數小結 362
10.4 this指針 363
10.5 對象數組 368
10.6 類作用域 370
10.6.1 作用域為類的常量 371
10.6.2 作用域內枚舉(C 11) 372
10.7 抽象數據類型 373
10.8 總結 376
10.9 復習題 377
10.10 編程練習 377

第11章 使用類 380
11.1 運算符重載 380
11.2 計算時間:一個運算符重載示例 381
11.2.1 添加加法運算符 384
11.2.2 重載限製 387
11.2.3 其他重載運算符 388
11.3 友元 390
11.3.1 創建友元 391
11.3.2 常用的友元:重載<<運算符 392
11.4 重載運算符:作為成員函數還是非成員函數 397
11.5 再談重載:一個矢量類 398
11.5.1 使用狀態成員 404
11.5.2 為Vector類重載算術運算符 406
11.5.3 對實現的說明 408
11.5.4 使用Vector類來模擬隨機漫步 408
11.6 類的自動轉換和強製類型轉換 411
11.6.1 轉換函數 415
11.6.2 轉換函數和友元函數 419
11.7 總結 421
11.8 復習題 422
11.9 編程練習 422

第12章 類和動態內存分配 425
12.1 動態內存和類 425
12.1.1 復習示例和靜態類成員 425
12.1.2 特殊成員函數 432
12.1.3 迴到Stringbad:復製構造函數的哪裏齣瞭問題 434
12.1.4 Stringbad的其他問題:賦值運算符 436
12.2 改進後的新String類 437
12.2.1 修訂後的默認構造函數 438
12.2.2 比較成員函數 439
12.2.3 使用中括號錶示法訪問字符 439
12.2.4 靜態類成員函數 441
12.2.5 進一步重載賦值運算符 441
12.3 在構造函數中使用new時應注意的事項 446
12.3.1 應該和不應該 447
12.3.2 包含類成員的類的逐成員復製 448
12.4 有關返迴對象的說明 449
12.4.1 返迴指嚮const對象的引用 449
12.4.2 返迴指嚮非const對象的引用 449
12.4.3 返迴對象 450
12.4.4 返迴const對象 450
12.5 使用指嚮對象的指針 451
12.5.1 再談new和delete 453
12.5.2 指針和對象小結 454
12.5.3 再談定位new運算符 456
12.6 復習各種技術 459
12.6.1 重載<<運算符 459
12.6.2 轉換函數 460
12.6.3 其構造函數使用new的類 460
12.7 隊列模擬 460
12.7.1 隊列類 461
12.7.2 Customer類 468
12.7.3 ATM模擬 471
12.8 總結 475
12.9 復習題 476
12.10 編程練習 477

第13章 類繼承 480
13.1 一個簡單的基類 481
13.1.1 派生一個類 482
13.1.2 構造函數:訪問權限的考慮 484
13.1.3 使用派生類 486
13.1.4 派生類和基類之間的特殊關係 488
13.2 繼承:is-a關係 489
13.3 多態公有繼承 490
13.4 靜態聯編和動態聯編 501
13.4.1 指針和引用類型的兼容性 502
13.4.2 虛成員函數和動態聯編 503
13.4.3 有關虛函數注意事項 505
13.5 訪問控製:protected 507
13.6 抽象基類 508
13.6.1 應用ABC概念 510
13.6.2 ABC理念 516
13.7 繼承和動態內存分配 516
13.7.1 種情況:派生類不使用new 516
13.7.2 第二種情況:派生類使用new 517
13.7.3 使用動態內存分配和友元的繼承示例 519
13.8 類設計迴顧 523
13.8.1 編譯器生成的成員函數 523
13.8.2 其他的類方法 524
13.8.3 公有繼承的考慮因素 527
13.8.4 類函數小結 530
13.9 總結 530
13.10 復習題 531
13.11 編程練習 531

第14章 C 中的代碼重用 534
14.1 包含對象成員的類 534
14.1.1 valarray類簡介 535
14.1.2 Student類的設計 535
14.1.3 Student類示例 537
14.2 私有繼承 543
14.2.1 Student類示例(新版本) 543
14.2.2 使用包含還是私有繼承 549
14.2.3 保護繼承 549
14.2.4 使用using重新定義訪問權限 550
14.3 多重繼承 551
14.3.1 有多少Worker 555
14.3.2 哪個方法 558
14.3.3 MI小結 567
14.4 類模闆 567
14.4.1 定義類模闆 568
14.4.2 使用模闆類 570
14.4.3 深入探討模闆類 572
14.4.4 數組模闆示例和非類型參數 577
14.4.5 模闆多功能性 578
14.4.6 模闆的具體化 582
14.4.7 成員模闆 584
14.4.8 將模闆用作參數 586
14.4.9 模闆類和友元 588
14.4.10 模闆彆名(C 11) 593
14.5 總結 594
14.6 復習題 595
14.7 編程練習 597

第15章 友元、異常和其他 602
15.1 友元 602
15.1.1 友元類 602
15.1.2 友元成員函數 606
15.1.3 其他友元關係 609
15.1.4 共同的友元 610
15.2 嵌套類 611
15.2.1 嵌套類和訪問權限 612
15.2.2 模闆中的嵌套 613
15.3 異常 616
15.3.1 調用abort() 616
15.3.2 返迴錯誤碼 617
15.3.3 異常機製 619
15.3.4 將對象用作異常類型 621
15.3.5 異常規範和C 11 624
15.3.6 棧解退 625
15.3.7 其他異常特性 629
15.3.8 exception類 631
15.3.9 異常、類和繼承 634
15.3.10 異常何時會迷失方嚮 639
15.3.11 有關異常的注意事項 641
15.4 RTTI 642
15.4.1 RTTI的用途 642
15.4.2 RTTI的工作原理 642
15.5 類型轉換運算符 649
15.6 總結 652
15.7 復習題 653
15.8 編程練習 654

第16章 string類和標準模闆庫 655
16.1 string類 655
16.1.1 構造字符串 655
16.1.2 string類輸入 659
16.1.3 使用字符串 661
16.1.4 string還提供瞭哪些功能 665
16.1.5 字符串種類 666
16.2 智能指針模闆類 667
16.2.1 使用智能指針 668
16.2.2 有關智能指針的注意事項 670
16.2.3 unique_ptr為何優於auto_ptr 672
16.2.4 選擇智能指針 673
16.3 標準模闆庫 674
16.3.1 模闆類vector 675
16.3.2 可對矢量執行的操作 676
16.3.3 對矢量可執行的其他操作 680
16.3.4 基於範圍的for循環(C 11) 684
16.4 泛型編程 684
16.4.1 為何使用迭代器 685
16.4.2 迭代器類型 688
16.4.3 迭代器層次結構 689
16.4.4 概念、改進和模型 690
16.4.5 容器種類 695
16.4.4 關聯容器 702
16.4.5 無序關聯容器(C 11) 707
16.5 函數對象 707
16.5.1 函數符概念 707
16.5.2 預定義的函數符 710
16.5.3 自適應函數符和函數適配器 711
16.6 算法 713
16.6.1 算法組 713
16.6.2 算法的通用特徵 714
16.6.3 STL和string類 715
16.6.4 函數和容器方法 716
16.6.5 使用STL 717
16.7 其他庫 720
16.7.1 vector、valarray和array 720
16.7.2 模闆initializer_list(C 11) 724
16.7.3 使用initializer_list 725
16.8 總結 727
16.9 復習題 728
16.10 編程練習 728

第17章 輸入、輸齣和文件 731
17.1 C 輸入和輸齣概述 731
17.1.1 流和緩衝區 732
17.1.2 流、緩衝區和iostream文件 733
17.1.3 重定嚮 735
17.2 使用cout進行輸齣 736
17.2.1 重載的<<運算符 736
17.2.2 其他ostream方法 738
17.2.3 刷新輸齣緩衝區 740
17.2.4 用cout進行格式化 741
17.3 使用cin進行輸入 753
17.3.1 cin>>如何檢查輸入 754
17.3.2 流狀態 756
17.3.3 其他istream類方法 759
17.3.4 其他istream方法 764
17.4 文件輸入和輸齣 768
17.4.1 簡單的文件I/O 768
17.4.2 流狀態檢查和is_open() 770
17.4.3 打開多個文件 771
17.4.4 命令行處理技術 772
17.4.5 文件模式 773
17.4.6 隨機存取 781
17.5 內核格式化 788
17.6 總結 790
17.7 復習題 791
17.8 編程練習 792

第18章 探討C 新標準 795
18.1 復習前麵介紹過的C 11功能 795
18.1.1 新類型 795
18.8.2 統一的初始化 795
18.1.3 聲明 796
18.1.4 智能指針 798
18.1.5 異常規範方麵的修改 798
18.1.6 作用域內枚舉 799
18.1.7 對類的修改 799
18.1.8 模闆和STL方麵的修改 800
18.1.9 右值引用 801
18.2 移動語義和右值引用 802
18.2.1 為何需要移動語義 802
18.2.2 一個移動示例 803
18.2.3 移動構造函數解析 808
18.2.4 賦值 809
18.2.5 強製移動 809
18.3 新的類功能 813
18.3.1 特殊的成員函數 813
18.3.2 默認的方法和禁用的方法 814
18.3.3 委托構造函數 815
18.3.4 繼承構造函數 815
18.3.5 管理虛方法:override和final 817
18.4 Lambda函數 817
18.4.1 比較函數指針、函數符和Lambda函數 818
18.4.2 為何使用lambda 820
18.5 包裝器 822
18.5.1 包裝器function及模闆的低效性 823
18.5.2 修復問題 825
18.5.3 其他方式 826
18.6 可變參數模闆 827
18.6.1 模闆和函數參數包 827
18.6.2 展開參數包 828
18.6.3 在可變參數模闆函數中使用遞歸 828
18.7 C 11新增的其他功能 831
18.7.1 並行編程 831
18.7.2 新增的庫 831
18.7.3 低級編程 832
18.7.4 雜項 832
18.8 語言變化 832
18.8.1 Boost項目 833
18.8.2 TR1 833
18.8.3 使用Boost 833
18.9 接下來的任務 834
18.10 總結 834
18.11 復習題 835
18.12 編程練習 838

附錄A 計數係統 839
A.1 十進製數 839
A.2 八進製整數 839
A.3 十六進製數 839
A.4 二進製數 840
A.5 二進製和十六進製 841

附錄B C 保留字 842
B.1 C 關鍵字 842
B.2 替代標記 842
B.3 C 庫保留名稱 843
B.4 有特殊含義的標識符 843

附錄C ASCII字符集 845

附錄D 運算符優先級 849

附錄E 其他運算符 852
E.1 按位運算符 852
E.1.1 移位運算符 852
E.1.2 邏輯按位運算符 853
E.1.3 按位運算符的替代錶示 855
E.1.4 幾種常用的按位運算符技術 856
E.2 成員解除引用運算符 857
E.3 alignof(C 11) 860
E.4 noexcept(C 11) 861

附錄F 模闆類string 862
F.1 13種類型和一個常量 862
F.2 數據信息、構造函數及其他 863
F.2.1 默認構造函數 865
F.2.2 使用C-風格字符串的構造函數 865
F.2.3 使用部分C-風格字符串的構造函數 865
F.2.4 使用左值引用的構造函數 866
F.2.5 使用右值引用的構造函數(C 11) 866
F.2.6 使用一個字符的n個副本的構造函數 867
F.2.7 使用區間的構造函數 867
F.2.8 使用初始化列錶的構造函數(C 11) 868
F.2.9 內存雜記 868
F.3 字符串存取 868
F.4 基本賦值 869
F.5 字符串搜索 869
F.5.1 find()係列 870
F.5.2 rfind()係列 870
F.5.3 find_first_of()係列 870
F.5.4 find_last_of()係列 871
F.5.5 find_first_not_of()係列 871
F.5.6 find_last_not_of()係列 871
F.6 比較方法和函數 872
F.7 字符串修改方法 873
F.7.1 用於追加和相加的方法 873
F.7.2 其他賦值方法 874
F.7.3 插入方法 874
F.7.4 清除方法 875
F.7.5 替換方法 875
F.7.6 其他修改方法:copy()和swap() 876
F.8 輸齣和輸入 876

附錄G 標準模闆庫方法和函數 877
G.1 STL和C 11 877
G.1.1 新增的容器 877
G.1.2 對C 98容器所做的修改 877
G.2 大部分容器都有的成員 878
G.3 序列容器的其他成員 881
G.4 set和map的其他操作 883
G.4 無序關聯容器(C 11) 884
G.5 STL函數 886
G.5.1 非修改式序列操作 886
G.5.2 修改式序列操作 890
G.5.3 排序和相關操作 897
G.5.4 數值運算 907

附錄H 精選讀物和網上資源 909
H.1 精選讀物 909
H.2 網上資源 910

附錄I 轉換為ISO標準C 911
I.1 使用一些預處理器編譯指令的替代品 911
I.1.1 使用const而不是#define來定義常量 911
I.1.2 使用inline而不是#define來定義小型函數 912
I.2 使用函數原型 913
I.3 使用類型轉換 913
I.4 熟悉C 特性 913
I.5 使用新的頭文件 914
I.6 使用名稱空間 914
I.7 使用智能指針 915
I.8 使用string類 915
I.9 使用STL 915

附錄J 復習題答案 916
第2章復習題答案 916
第3章復習題答案 916
第4章復習題答案 917
第5章復習題答案 919
第6章復習題答案 919
第7章復習題答案 920
第8章復習題答案 922
第9章復習題答案 924
第10章復習題答案 925
第11章復習題答案 927
第12章復習題答案 927
第13章復習題答案 929
第14章復習題答案 930
第15章復習題答案 931
第16章復習題答案 932
第17章復習題答案 933
第18章復習題答案 935

作者介紹


Stephen Prata在美國加州肯特菲爾得的馬林學院教授天文、物理和計算機科學。他畢業於加州理工學院,在美國加州大學伯剋利分校獲得博士學位。他單獨或與他人閤 作編寫的編程圖書有十多本,其中《New C Primer Plus》獲得瞭計算機齣版聯閤會1990年度*“How-to”計算機圖書奬,《C Primer Plus》獲得瞭計算機齣版聯閤會1991年度*“How-to”計算機圖書奬提名。

文摘





















序言



C++ 編程藝術:通往高效與精妙的階梯 這是一本獻給所有渴望深入理解 C++ 語言精髓,並希望以嚴謹、高效、優雅的方式進行軟件開發的讀者的指南。它並非聚焦於某一本具體的書籍,而是圍繞 C++ 這一強大而多樣的編程語言本身,深入淺齣地剖析其核心概念、高級特性以及在實際應用中的最佳實踐。本書旨在構建一座堅實的橋梁,將初學者引領入 C++ 的宏偉大門,為經驗豐富的開發者提供進階的智慧與啓迪,最終目標是幫助每一位學習者掌握 C++ 的藝術,創造齣穩定、高效且富有錶現力的軟件。 第一部分:C++ 的基石——理解與掌握 在 C++ 的世界裏,紮實的理論基礎是構建一切復雜應用的前提。本書的第一部分將帶領讀者係統性地重溫並深化對 C++ 基礎知識的理解。 變量、數據類型與錶達式的精妙運用: 我們將超越簡單的聲明和賦值,深入探討不同數據類型的內在機製,理解它們在內存中的錶示方式,以及在不同場景下選擇最閤適的數據類型的考量。例如,為何在某些情況下 `int` 比 `long` 更優,何時應該考慮 `unsigned` 類型,以及浮點數運算的精度問題和陷阱。我們將學習如何構建復雜且高效的錶達式,理解運算符的優先級和結閤性,並掌握如何利用位運算符進行底層操作,這在嵌入式開發和性能優化中至關重要。 控製流的邏輯藝術: 條件語句(`if-else`, `switch`)和循環語句(`for`, `while`, `do-while`)是程序設計的骨架。本書將引導讀者不僅僅是會使用它們,更是要理解其背後的邏輯,學習如何設計齣清晰、高效、可維護的控製流程。我們將探討如何通過組閤控製語句來處理復雜的邏輯,如何利用 `break` 和 `continue` 來精確控製循環,以及如何識彆和避免常見的邏輯錯誤。函數式編程風格中的一些控製流範式,例如遞歸,也將被提及,並分析其在 C++ 中的適用性和實現方式。 函數的組織與設計: 函數是代碼復用和模塊化的基石。我們不僅會學習如何定義和調用函數,更會深入探討函數的參數傳遞機製(傳值、傳引用、傳指針),理解它們各自的優缺點和適用場景。函數重載、函數模闆將是提升代碼通用性和靈活性的關鍵。參數的默認值、可變參數列錶等特性也將被詳細闡述。此外,我們還會討論如何設計齣職責單一、易於測試和維護的函數,以及函數在麵嚮對象設計中的角色。 指針與引用的深層探索: 指針是 C++ 最強大也最具挑戰性的特性之一。本書將係統性地講解指針的原理,包括內存地址、指針解引用、指針運算,以及多級指針的復雜概念。我們會深入剖析指針在數組、字符串、動態內存分配中的應用,並強調指針安全的重要性,例如避免野指針、懸空指針等問題。引用作為指針的更安全的替代品,也將被詳細講解,分析其與指針的異同,以及在函數參數傳遞和返迴值中的優勢。 麵嚮對象編程(OOP)的哲學與實踐: C++ 的核心競爭力之一在於其強大的麵嚮對象特性。我們將係統性地講解類(`class`)與結構體(`struct`)的設計,理解封裝、繼承和多態這三大基本原則。 封裝: 學習如何使用訪問修飾符(`public`, `private`, `protected`)來控製成員的訪問權限,構建健壯且易於管理的類。 繼承: 探索單繼承、多重繼承以及虛繼承的原理和應用,理解基類與派生類的關係,以及如何有效地利用繼承來減少代碼重復,實現代碼的擴展性。 多態: 深入理解虛函數、純虛函數和抽象類的概念,掌握通過基類指針或引用調用派生類對象成員的動態綁定機製,以及其在實現通用接口和解耦設計中的強大作用。 構造函數與析構函數: 學習對象的生命周期管理,理解構造函數在對象初始化時的作用,拷貝構造函數和移動構造函數的必要性,以及析構函數在對象銷毀時進行資源清理的關鍵性。 運算符重載: 掌握如何為自定義類型定義各種運算符的行為,使代碼更具可讀性和錶達力,就像使用內置類型一樣自然。 第二部分:C++ 的進階之路——高效與精巧的藝術 掌握瞭 C++ 的基礎之後,本書將帶領讀者進入更高級的領域,學習如何編寫更高效、更安全、更具錶現力的 C++ 代碼。 內存管理與資源控製: C++ 賦予開發者直接管理內存的權力,但也帶來瞭潛在的風險。本書將深入探討動態內存分配(`new`, `delete`)的機製,以及 RAII(Resource Acquisition Is Initialization)原則在 C++ 中的體現。我們將學習智能指針(`std::unique_ptr`, `std::shared_ptr`, `std::weak_ptr`)如何自動化內存管理,顯著降低內存泄漏和懸空指針的風險,並理解它們在不同場景下的最佳使用方式。 標準模闆庫(STL)的威力: STL 是 C++ 的瑰寶,它提供瞭大量高效、通用的數據結構和算法。我們將係統性地學習 STL 的核心組件: 容器: 深入瞭解序列容器(如 `std::vector`, `std::deque`, `std::list`),關聯容器(如 `std::map`, `std::set`, `std::unordered_map`, `std::unordered_set`),以及容器適配器(如 `std::stack`, `std::queue`, `std::priority_queue`)的特性、性能特點和適用場景。 算法: 學習 STL 提供的豐富的算法庫,包括排序、查找、遍曆、修改等,以及如何將其與容器高效結閤,編寫簡潔而強大的代碼。 迭代器: 理解迭代器的概念,它是 STL 泛型編程的核心,如何使用不同類型的迭代器來訪問和操作容器中的元素。 異常處理的健壯之道: 異常處理是編寫健壯 C++ 程序的重要手段。我們將學習如何使用 `try`, `catch`, `throw` 關鍵字來捕獲和處理運行時錯誤,理解異常的安全傳播機製,以及如何設計齣清晰、有層級的異常處理策略,確保程序在遇到意外情況時能夠優雅地恢復或終止。 模闆元編程(TMP)與泛型編程的極緻: 模闆不僅僅用於生成代碼,它還是一種強大的編程範式,能夠實現編譯時的計算和類型推導。我們將深入探索模闆元編程的原理,理解其在實現高性能算法、編譯時類型檢查以及代碼生成方麵的強大能力。我們將學習如何編寫復雜的模闆特化、遞歸模闆,以及如何利用 `constexpr` 等特性進行編譯期計算。 C++11/14/17/20 及後續標準的新特性: C++ 標準在不斷發展,引入瞭許多提升開發效率和語言錶達力的特性。本書將精選並深入講解那些對現代 C++ 開發至關重要的特性,例如: Lambda 錶達式: 學習如何編寫簡潔的匿名函數,及其在 STL 算法、異步編程等場景下的廣泛應用。 右值引用與移動語義: 理解右值引用和移動語義如何通過減少不必要的拷貝來顯著提升性能,特彆是在處理大型對象和資源轉移時。 智能指針的全麵運用: 再次強調智能指針在現代 C++ 內存管理中的核心地位。 並發與多綫程: 介紹 C++ 標準庫提供的多綫程支持,包括綫程創建、同步原語(互斥鎖、條件變量)、原子操作等,以及如何編寫安全高效的並發程序。 其他重要特性: 如 `auto` 類型推導、範圍 `for` 循環、`nullptr`、`constexpr`、結構化綁定、模塊化(C++20)等,將根據其重要性和普遍性進行詳細闡述。 第三部分:C++ 的工程實踐——效率、可維護性與最佳實踐 理論知識最終需要轉化為實際的軟件工程能力。本書的第三部分將聚焦於 C++ 在實際開發中的工程實踐。 代碼風格與可讀性: 遵循統一、清晰的代碼風格是構建可維護代碼的關鍵。我們將討論命名規範、縮進、注釋、模塊劃分等方麵的最佳實踐,幫助讀者編寫齣易於他人閱讀和理解的代碼。 調試技巧與工具: 掌握高效的調試技巧是每個 C++ 開發者必備的技能。我們將介紹常見的調試方法,以及如何利用 gdb, Visual Studio Debugger 等調試器來定位和解決程序中的 Bug。 性能優化策略: C++ 的強大之處在於其性能潛力。本書將指導讀者識彆性能瓶頸,學習常見的優化技術,例如算法優化、數據結構選擇、避免不必要的拷貝、利用緩存、內聯函數、以及理解編譯器優化等。 構建係統與依賴管理: 學習使用 CMake, Make 等構建工具來管理復雜的 C++ 項目,理解如何組織源代碼、管理編譯選項以及處理項目依賴。 單元測試與集成測試: 編寫測試是保證代碼質量、降低 Bug 率的重要手段。我們將介紹單元測試框架(如 Google Test, Catch2)的使用,以及如何為 C++ 代碼編寫有效的測試用例。 設計模式的應用: 探索 C++ 中常用的設計模式,例如單例模式、工廠模式、觀察者模式、策略模式等,理解它們在解決常見軟件設計問題中的作用,以及如何將這些模式優雅地融入 C++ 代碼。 現代 C++ 開發的工具鏈: 介紹當前主流的 C++ 開發工具,包括編譯器(GCC, Clang, MSVC)、集成開發環境(IDE)、代碼分析工具、性能分析工具等,幫助讀者構建高效的開發環境。 錯誤處理與日誌記錄: 除瞭異常處理,我們將探討更廣泛的錯誤處理機製,以及如何設計和實現有效的日誌記錄係統,便於問題追蹤和係統監控。 結語:持續學習與探索 C++ 是一門博大精深的語言,其發展仍在繼續。本書的目標是為你打下堅實的基礎,為你提供一個清晰的路綫圖,引導你不斷學習和探索 C++ 的廣闊天地。掌握 C++ 的藝術,不僅僅是掌握一門編程語言,更是掌握一種嚴謹、高效、精巧的思維方式,這將為你未來的軟件開發之路鋪平道路,讓你能夠應對日益復雜的工程挑戰,創造齣真正卓越的軟件作品。願你在 C++ 的學習旅程中,收獲智慧,享受創造的樂趣。

用戶評價

評分

我是一名在校的計算機專業學生,最近在準備參加一些編程競賽,所以需要鞏固一下C++的基礎知識。朋友推薦瞭這本《C++ Primer Plus》,說這是很多前輩都推崇的經典教材。拿到書後,我第一印象就是“厚重”,感覺裏麵包含瞭大量的信息。我花瞭一整天的時間粗略地翻瞭一遍目錄和一些章節的開頭,發現它的內容覆蓋麵非常廣,從最基本的語法、數據類型,到復雜的麵嚮對象編程、模闆、STL等等,幾乎涵蓋瞭C++的方方麵麵。我特彆留意瞭一下它對一些抽象概念的解釋方式,比如指針和引用,感覺作者嘗試用瞭比較形象的比喻,試圖讓初學者更容易理解。而且,書後通常會附帶很多練習題,這對於檢驗學習效果、加深理解來說至關重要。我個人比較喜歡這種“理論+實踐”的學習模式,所以這本書的練習題部分對我來說是亮點。雖然現在還沒有深入閱讀,但我已經能感覺到,如果能把這本書的內容完全掌握,對於理解C++的底層機製和編寫高質量的代碼,會有很大的幫助。我打算先從基礎部分開始,跟著書中的例子一步一步地敲代碼,再去做練習題,希望能通過這本書把我的C++功底打紮實。

評分

我是一名在IT行業摸爬滾打多年的老程序員瞭,雖然平時主要使用其他語言,但C++這門語言一直是我心中的一座“高山”。早就聽聞《C++ Primer Plus》是C++領域的權威教材,這次正好有機會拿到中文版,就抱著學習的態度翻閱瞭一下。這本書給我的第一感覺是“紮實”,它的內容組織非常有條理,從最基本的概念開始,一步一個腳印地深入。我特彆欣賞它在講解一些底層機製時,比如內存模型、指針運算等,能夠做到細緻入微,這對於理解C++的強大與復雜至關重要。書中大量的代碼示例也讓我覺得非常實用,每一個概念都有對應的代碼來演示,方便對照學習。盡管我接觸過不少C++的書籍,但這本書在一些細節上的闡述,以及對一些經典問題的解釋,還是讓我受益匪淺。我注意到它對STL(標準模闆庫)的介紹也相當詳盡,這對於提高開發效率和代碼質量非常有幫助。雖然我可能不會從頭到尾都仔細研讀,但作為一本參考書,或者在遇到難點需要深入理解時,這本書無疑是非常好的選擇。

評分

這是一本讓我既感到興奮又有些畏懼的書。興奮是因為它被譽為C++領域的經典之作,內容詳實,足以構建起一個紮實的C++知識體係;畏懼則是因為它的厚度和深度,讓我深感這是一場需要耐心和毅力的馬拉鬆。我拿到書後,首先就被它沉甸甸的分量所吸引,封麵上的“暢銷30年”和“必讀經典”字樣,更是增添瞭幾分學習的動力。我嘗試閱讀瞭其中關於“函數”的章節,作者的講解思路比較清晰,從函數的定義、調用,到參數傳遞、返迴值,再到函數重載和遞歸,層層遞進,循序漸進。我尤其喜歡書中為每個概念都配上瞭精心設計的代碼示例,這對於我這種動手能力較弱的學習者來說,簡直是福音。不用自己去思考如何構造例子,可以直接看到書中給齣的最佳實踐,然後跟著敲一遍,效果會好很多。但是,當我翻到後麵關於“指針”、“內存管理”等章節時,頓時感到腦子有點跟不上節奏瞭。這些概念本身就比較抽象,再加上書中大量的技術術語,讓我需要花費更多的時間去理解和消化。我明白,要真正掌握C++,光靠看是遠遠不夠的,還需要大量的實踐和反思。這本書就像一座寶庫,裏麵藏著無數珍貴的知識,但要挖掘齣來,需要付齣辛勤的汗水。

評分

說實話,我拿到這本《C++ Primer Plus》中文版已經有一段時間瞭,但一直沒能靜下心來好好讀。主要原因可能是我覺得它的篇幅實在太大瞭,光是目錄就讓人有點望而卻步,感覺裏麵信息量爆炸。我之前也接觸過一些C++的書籍,有些寫得過於簡潔,看完之後感覺知識點很零散,而有些則寫得太深奧,普通人根本看不懂。這本書給我的感覺是,它試圖麵麵俱到,把C++的所有重要概念都講清楚,但這也就意味著內容會非常多。我曾經翻閱過其中關於“類”的章節,感覺作者的講解還是比較細緻的,舉瞭很多例子,試圖解釋清楚麵嚮對象編程的思想。但說實話,對於我這種已經工作瞭一段時間,但C++基礎並不牢固的開發者來說,理解起來還是有些吃力,需要不斷地查閱資料和反復思考。我個人覺得,這本書更適閤作為一本“工具書”來使用,當你遇到某個C++相關的概念或者問題時,可以翻到對應的章節去查找答案和深入理解。直接從頭讀到尾,對於非專業人士或者基礎非常薄弱的人來說,可能需要很大的毅力和時間。

評分

這本書我拿到手大概有兩周瞭,每天晚上都會抽一些時間來翻閱。不得不說,這本書的體量是真的不小,厚實得像一本磚頭,拿在手裏沉甸甸的,感覺很有分量。封麵設計倒是挺簡潔大方的,中文版的印刷質量也讓我挺滿意,紙張摸起來很舒服,字跡清晰,排版也很規整,看起來不費眼睛。我之前也斷斷續續接觸過一些編程類的書籍,但很多都寫得過於枯燥或者晦澀難懂,讀起來總覺得像在啃硬骨頭。這本書雖然內容不少,但我嘗試著去理解,感覺它的邏輯還是比較清晰的,作者的講解風格似乎有一種循序漸進的感覺,不像有些書上來就拋齣很多概念,讓人措手不及。我個人覺得,對於初學者來說,一開始就麵對這麼一本“厚書”可能會有點壓力,但如果你能沉下心來,一點一點地去消化,並且願意花時間和精力去實踐,那收獲應該會非常可觀。畢竟,C++這門語言本身就不是一蹴而就的,需要長時間的積纍和練習。我目前還在努力理解其中的一些基礎概念,特彆是關於內存管理和麵嚮對象的那些部分,感覺需要反復琢磨。

評分

書本運送途中保護的很好,收到的很完整。發貨也很快。

評分

書是正版。

評分

值得擁有

評分

書到手時破損比較嚴重

評分

不錯。。。。。。。。。

評分

書是舊的 而且書皮還爛瞭

評分

書是陳的,沒用過,不過不影響使用

評分

不會看....買來裝13的

評分

gvfhzd太不好瞭,果然,便宜沒好貨,唉,書髒,就想問一下,賣傢是拿這個書放桌子底下瞭吧。墊桌底兒?

相關圖書

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有