TOP
0
0
【簡體曬書區】 單本79折,5本7折,活動好評延長至5/31,趕緊把握這一波!
完美C++(第5版‧雙色)(簡體書)
滿額折

完美C++(第5版‧雙色)(簡體書)

人民幣定價:148 元
定價
:NT$ 888 元
優惠價
87773
絕版無法訂購
相關商品
商品簡介
目次

商品簡介

《完美C++(第5版)》為讀者提供了一個學習、理解和掌握 C++程式設計語言的全面視圖,覆蓋面廣、實用性強。書中介紹了 C++的基底資料型別,如字串、陣列、指標、結構體、類等,同時也詳細描述了物件導向程式設計語言的特性:封裝、繼承和多態,以及這些特性在 C++語言中的具體使用方式。本書的後面章節還重點介紹了範本、鏈式資料結構、標準範本庫以及異常處理等C++語言的進階程式設計知識。這些知識在從事具體程式設計工作時會經常使用到。
《完美C++(第5版)》對C++的一些重點知識,輔以實例進行了重點講解,特別是對一些易混淆、易犯錯的知識點,專門以“陷阱”的組織方式進行深入分析和討論,幫助讀者更好地理解和掌握。《完美C++(第5版)》中各章均含有大量例子及完整的程式碼片段和分析,幫助讀者強化對關鍵概念的理解,以及對主題的掌握。各章還配有豐富的自測習題以及答案,幫助讀者進一步提升對C++知識的理解以及實際動手程式設計能力。
原書由知名學者所著,歷經多個版本,根據C++技術的發展,內容不斷完善、豐富,體系完整、實踐性強。
《完美C++(第5版)》可以作為高等院校學習程式設計基本知識以及C++程式設計語言課程的教材,也可以作為有C++程式設計經驗者的參考書。

目次

第1章 C++ 基礎 1

1.1 C++簡介 2

C++語言的起源 2

C++與面向對象編程 3

C++的特點 3

C++術語 3

C++程序示例 3

1.2 變量、表達式及賦值語句 5 第1章 C++ 基礎 1

1.1 C++簡介 2

C++語言的起源 2

C++與面向對象編程 3

C++的特點 3

C++術語 3

C++程序示例 3

1.2 變量、表達式及賦值語句 5

標識符 5

變量 6

賦值語句 8

string類簡介 9

陷阱:未初始化變量 9

提示:采用有意義的變量名 10

更多賦值語句 11

賦值兼容性 11

字面值 12

轉義序列 14

命名常量 14

算數運算符和表達式 16

整數和浮點數除法 17

陷阱:全整數除法 17

類型轉換 18

自增和自減運算符 20

陷阱:求值順序 21

1.3 控制臺輸入/輸出 22

使用cout輸出 22

換行符 23

提示:以\n或endl結束程序 24

格式化浮點數 24

用cerr輸出 25

用cin輸入 25

提示:輸入/輸出中的換行 28

1.4 編程風格 28

注釋 28

1.5 庫與命名空間 29

庫與include命令 29

命名空間 29

陷阱:庫名的問題 30

第2章 流程控制 37

2.1 布爾表達式 38

創建布爾表達式 38

陷阱:不等式連寫 39

布爾表達式求值 40

優先級規則 41

陷阱:整數值用作布爾值 44

2.2 分支機制 45

if-else語句 45

復合語句 47

陷阱:用=代替== 47

省略else 49

嵌套語句 49

多分支if-else語句 49

switch語句 50

陷阱:遺漏switch語句中的break 52

提示:在菜單中使用switch語句 52

枚舉類型 53

條件運算符 53

2.3 循環 54

while和do-while循環 54

再談自增和自減運算符 57

逗號運算符 58

for語句 59

提示:重復N次的循環 61

陷阱:for語句中額外的分號 62

陷阱:無限循環 62

break與continue語句 65

嵌套循環 67

2.4 文件輸入簡介 67

通過ifstream讀取文本文件內容 68

第3章 函數基礎 81

3.1 預定義函數 82

帶有返回值的預定義函數 82

預定義的void函數 86

隨機數生成器 88

3.2 自定義函數 91

定義帶有返回值的函數 91

函數聲明的另一種形式 93

陷阱:參數順序的錯誤 93

調用函數的函數 94

示例:一個四舍五入的函數 94

返回布爾值的函數 96

定義void函數 96

void函數中的return語句 98

前提條件和運行結果 98

main函數 100

遞歸函數 100

3.3 作用域規則 101

局部變量 101

過程抽象 103

全局常量和全局變量 104

語句塊 106

嵌套作用域 107

提示:在分支和循環語句中使用函數調用 107

for循環體中的變量聲明 107

第4章 函數與重載 117

4.1 參數 118

傳值參數 118

初識引用參數 120

引用傳遞調用機制詳解 122

常量引用參數 124

示例:函數swapValues 124

提示:一種操作,而不是代碼 125

混合參數列表 126

提示:使用何種參數 126

陷阱:無意的局部變量 128

提示:選擇形參的名字 129

示例:買比薩 129

4.2 重載與默認實參 132

重載簡介 132

陷阱:自動類型轉換與重載 134

重載解析的規則 135

示例:改寫“買比薩程序” 136

默認參數 138

4.3 函數的測試和調試 140

assert宏 140

占位程序和驅動程序 141

第5章 數組 151

5.1 數組簡介 152

數組的聲明和引用 152

提示:對數組使用for循環 154

陷阱:數組的索引始終是從0開始的 154

提示:使用已定義的常量作為數組的大小 154

內存中的數組 155

陷阱:數組越界 157

數組的初始化 157

5.2 函數中的數組 159

索引變量作為函數實參 159

整個數組作為函數實參 160

const修飾符 163

陷阱:const參數的不一致使用 164

返回數組的函數 164

示例:生產圖表 165

5.3 用數組編程 169

部分填充的數組 169

提示:不要吝嗇形參的使用 169

示例:查詢數組 172

示例:給數組排序 174

5.4 多維數組 178

多維數組基礎 178

多維數組參數 179

示例:使用二維數組的記分程序 179

第6章 結構體和類 195

6.1 結構體 196

結構體類型 198

陷阱:漏掉結構體定義末尾的分號 200

結構體作為函數參數 201

提示:使用多重結構體 201

結構體的初始化 204

6.2 類 206

定義類和成員函數 206

封裝 211

公有成員和私有成員 211

取值和賦值函數 214

提示:接口和實現的分離 216

提示:封裝的測試 216

結構體與類 217

提示:對象思考 217

第7章 構造函數及其他工具 225

7.1 構造函數 226

構造函數的定義 226

陷阱:無參構造函數 230

構造函數的顯式調用 230

提示:總是為類定義一個默認構造函數 231

示例:BankAccount類 233

類類型成員變量 238

7.2 其他工具 241

const修飾符 241

陷阱:const的不一致用法 243

內聯函數 246

靜態成員 248

嵌套類和局部類定義 251

7.3 向量——標準模板庫預覽 251

向量基礎 252

陷阱:方括號的索引超過向量的大小 253

提示:向量的賦值 254

效率問題 255

第8章 運算符重載、友元和引用 263

8.1 基本運算符的重載 264

重載基礎 264

提示:構造函數可以返回一個對象 269

返回常量類型 270

一元運算符的重載 272

作為成員函數的運算符重載 272

提示:類可以訪問其所有對象 275

重載函數調用符( ) 275

陷阱:重載 &&、||及逗號運算符 275

8.2 友元函數與自動類型轉換 276

構造函數的自動類型轉換 276

陷阱:成員運算符和自動類型轉換 277

友元函數 277

友元類 280

陷阱:不支持友元的編譯器 281

8.3 引用和其他運算符重載 282

引用 282

提示:返回類的成員變量 283

重載“>>”和“<”>

提示:應使用什么樣的返回值類型 289

賦值運算符 291

重載自增和自減運算符 291

重載數組運算符[ ] 294

基于左值和右值的重載 296

第9章 字符串 303

9.1 字符串類型數組 304

C字符串值和C字符串變量 304

陷阱:對C字符串使用 “=” 和 “==” 308

中的其他函數 309

示例: 命令行參數 311

C字符串的輸入/輸出 313

9.2 字符操作工具 315

字符的輸入/輸出 315

成員函數get和put 315

示例:使用換行函數檢查輸入 318

陷阱:輸入時沒有處理‘\n’ 319

成員函數putback、peek和ignore 320

字符操作函數 322

陷阱:函數toupper和tolower返回int型數值 324

9.3 標準string類 325

標準string類簡介 325

string類的輸入和輸出 327

提示:getline函數的其他版本 330

陷阱:對cin同時使用>>和getline 331

使用string類處理字符串 331

示例: 回文檢測 335

string類對象和C字符串的轉換 338

第10章 指針和動態數組 347

10.1 指針 348

指針變量 349

內存管理基礎 355

陷阱:懸空指針 357

動態變量和自動變量 358

提示:定義指針類型 358

陷阱:指針用作傳值參數 360

指針的應用 361

10.2 動態數組 362

數組變量和指針變量 362

創建并使用動態數組 363

示例:一個返回數組的函數 366

指針運算 368

多維動態數組 368

10.3 類、指針和動態數組 371

運算符-> 371

this指針 371

重載賦值運算符 372

示例:部分填充數組的類 378

析構函數 380

拷貝構造函數 381

第11章 分散編譯和命名空間 391

11.1 分散編譯 392

封裝回顧 392

頭文件和實現文件 393

示例:DigitalTime類 399

提示:可重用的組件 401

使用#ifndef 401

提示:定義其他庫 403

11.2 命名空間 404

命名空間和using指令 404

創建一個命名空間 406

using聲明 409

限定名稱 410

提示:為命名空間取名 412

示例:一個定義在命名空間中的類 412

無名稱的命名空間 413

陷阱:混淆全局命名空間和無名稱命名空間 418

提示:用無名稱命名空間代替static修飾符 419

提示:隱藏幫助函數 419

嵌套命名空間 420

提示:應該如何指明使用的命名空間 420

第12章 流和文件I/O操作 429

12.1 I/O流 430

文件I/O 431

陷阱:流變量的使用限制 434

向文件追加輸出內容 435

提示: 打開文件的另一種方法 436

提示:檢查一個文件是否已被成功打開 439

字符I/O 440

文件結束檢查 440

12.2 I/O流工具 444

使用文件名輸入 444

使用流函數進行格式化輸出 444

控制符 447

保存設置的標記 448

更多的輸出流成員函數 449

示例:整理文件格式 450

示例:編輯文本文件 452

12.3 流的繼承層次:繼承概述 455

流之間的繼承 455

示例:另一版本的newLine函數 457

使用類stringstream解析字符串 460

12.4 隨機文件存取 462

第13章 遞歸 477

13.1 遞歸void函數 478

示例:豎直排列的數字 479

跟蹤一個遞歸調用 481

深入理解遞歸 484

陷阱:無限遞歸 485

遞歸調用中的棧 487

陷阱:棧溢出 488

遞歸與迭代的比較 488

13.2 有返回值的遞歸函數 489

有返回值的遞歸函數的一般形式 489

示例:另一個冪函數 490

交叉遞歸 494

13.3 按遞歸方式思考問題 496

遞歸設計技巧 496

二分查找 497

編碼 498

檢查遞歸是否正確 501

效率 502

第14章 繼承 513

14.1 繼承基礎 514

派生類 514

派生類的構造函數 522

陷阱:使用基類的私有成員變量 524

陷阱:私有成員函數是無法被有效繼承的 526

protected限定符 526

成員函數的重定義 529

重定義與重載 530

訪問被重定義過的基類函數 531

不可被繼承的函數 532

14.2 利用繼承編程 533

派生類中的賦值運算符和拷貝構造函數 533

派生類的析構函數 534

示例:可備份的部分填充的數組 534

陷阱:賦值運算符兩邊是同一個對象 541

示例:PFArrayDBak的另一種實現 542

提示:一個類可以訪問本類所有對象的私有成員 544

提示:“是一個”和“有一個” 544

保護繼承和私有繼承 545

多繼承 546

第15章 多態與虛函數 555

15.1 虛函數基礎 556

延遲綁定 556

C++中的虛函數 557

提示:virtual屬性會被繼承 563

提示:什么時候應該使用虛函數 563

陷阱:沒有對虛成員函數進行定義 564

抽象類與純虛函數 564

示例:抽象類 565

15.2 指針和虛函數 567

虛函數與擴展類型兼容性 567

陷阱:切片問題 571

提示:使析構函數成為虛函數 572

向下類型轉換和向上類型轉換 573

C++如何實現虛函數 574

第16章 模板 585

16.1 函數模板 586

函數模板語法 587

陷阱:編譯器的復雜性 590

提示:如何定義模板 592

示例:一個通用的排序函數 592

陷阱:使用模板時誤用了不正確的數據類型 596

16.2 類模板 597

類模板語法 598

示例:一個數組模板類 601

模板中的vector和 basic_string 606

16.3 模板和繼承 606

示例: 帶備份的部分填充數組模板類 607

第17章 鏈式數據結構 617

17.1 節點和鏈表 619

節點 619

鏈表 623

在鏈表頭插入節點 625

陷阱:丟失節點 627

插入和刪除鏈表內的節點 628

陷阱:對動態數據結構使用賦值運算符 631

搜索鏈表 631

搜索函數偽代碼 632

雙向鏈表 633

為雙向鏈表增加一個節點 635

從雙向鏈表中刪除一個節點 635

示例: 使用雙向鏈表實現的通用排序模板函數 641

17.2 鏈表的應用 644

示例:棧模板類 644

示例:隊列模板類 650

提示:命名空間的注解 652

友元類以及類似的其他選擇 653

示例:包含節點鏈的哈希表 655

字符串哈希函數 656

哈希表的效率 660

示例:集合(set)模板類 661

集合的基本操作 662

鏈表創建的集合的效率 667

17.3 迭代器 668

指針作為迭代器 668

迭代器類 669

示例:迭代器類 670

17.4 樹 676

樹的屬性 676

示例:樹模板類 678

第18章 異常處理 695

18.1 異常處理基礎 696

異常處理的簡單樣例 697

定義自己的異常類 704

多個拋出和捕獲 704

陷阱:首先捕獲比較明確的異常 707

提示:異常類可以很簡單 708

在函數中拋出異常 708

異常說明 710

陷阱:派生類中的異常說明 712

18.2 異常處理的編程技術 713

拋出異常的時機 713

陷阱:未被捕獲的異常 714

陷阱:嵌套try-catch塊 715

陷阱:過度使用異常 715

異常類層次結構 715

可用內存測試 716

再次拋出異常 716

第19章 標準模板庫 721

19.1 迭代器 723

迭代器基礎 723

陷阱:編譯器問題 726

迭代器的種類 728

常量迭代器和可變迭代器 731

反向迭代器 732

其他種類的迭代器 733

19.2 容器 734

連續容器 734

陷阱:迭代器和刪除元素 738

提示:容器中的類型定義 739

容器適配器棧和隊列 739

陷阱:底層容器 740

關聯式容器set和map 742

效率 747

19.3 泛型算法 748

運行時間和大-O表示法 749

容器訪問運行時間 752

不改變序列的算法 753

改變序列的算法 757

集合算法 758

排序算法 7601

顯示全部信息

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 773
絕版無法訂購

暢銷榜

客服中心

收藏

會員專區