1. 程式人生 > >《C++ Primer Plus》(第6版)中文版_作者:[美]Stephen Prata_全文免費完整版pdf下載

《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小時內刪除;本書版權歸原作者及出版商所有,如果您喜歡,請購買正版。

.