《C++ Primer Plus》(第6版)中文版_作者:[美]Stephen Prata_全文免費完整版pdf下載
內容簡介
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時使用。
作者簡介
Stephen Prata在美國加州肯特菲爾得的馬林學院教授天文、物理和電腦科學。他畢業於加州理工學院,在美國加州大學伯克利分校獲得博士學位。他單獨或與他人合作編寫的程式設計圖書有十多本,其中《New C Primer Plus》獲得了計算機出版聯合會1990年度*“How-to”計算機圖書獎,《C Primer Plus》獲得了計算機出版聯合會1991年度*“How-to”計算機圖書獎提名。
目錄
第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
免責宣告:資料僅限個人學習之用,請在下載後24小時內刪除;本書版權歸原作者及出版商所有,如果您喜歡,請購買正版。
.