注冊 | 登錄讀書好,好讀書,讀好書!
讀書網-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網絡軟件與程序設計C/C++及其相關C++面向對象程序設計(第7版)

C++面向對象程序設計(第7版)

C++面向對象程序設計(第7版)

定 價:¥79.00

作 者: (美)薩維奇 著,周靖 譯
出版社: 清華大學出版社
叢編項: 國外經典教材·計算機科學與技術
標 簽: VC++

購買這本書可以去


ISBN: 9787302215301 出版時間: 2010-01-01 包裝: 平裝
開本: 大16開 頁數: 715 字數:  

內容簡介

  《C++面向對象程序設計(第7版)》是最優(yōu)秀的C++入門教材,深受師生歡迎。作者結合自己多年的教學經驗,根據教學大綱精心設計并編寫了書中內容。與此同時,還采用了很多便于讀者鞏固所學知識的教學特征,比如各章開始處的小節(jié)總覽,書中隨處可見的總結框、編程提示和編程陷阱,各章結尾處的小結、習題和編程項目等。這些非常適合初學者掌握重要的編程概念。全書共18章,6個附錄。在講解C++基礎知識之后,直接引導學生深入函數、I/O流、類、控制流程、命名空間、數組、字符串、指針和動態(tài)數組、遞歸、模板、指針和鏈表、派生類、異常以及標準模板庫。Walter Savitch教授的C++入門經典教材結構嚴謹、清晰,行文詼諧幽默,妙趣橫生80+技巧提示,30+生動有趣的編程實例60+精彩視頻,410+自測題,220+編程項目

作者簡介

  薩維奇(Walter Savitch),加州大學圣迭戈分校退休教授。1960年在加州大學伯克利分校獲得博士學位,曾擔任加州大學圣迭戈分校計算機科學系教授和認知科學跨學科博士項目主任。他在復雜性理論和并行計算模型方面做出了重要貢獻,研究領域包括形式語言理論和計算語言學等。除本書外,他還著有一系列編程類教材,深受師生好評,被譽為讀者最多的編程入門教材。譯者簡介:周靖,資深譯者,涉獵廣泛,具有深厚的技術功底和良好的文學素養(yǎng)。早期癡迷于硬件,《微型計算機》雜志特約作者。繼而潛心鉆研程序設計,并在這方面積累了豐富的經驗。此后專職從事技術圖書的翻譯。其翻譯風格嚴謹、準確、樸實、流暢,深受讀者好評。代表譯著有《C++面向對象程序設計》《Windows核心編程(第5版)》、《Visual C# 2008從入門到精通》、《C# 3.0本質論》等。

圖書目錄

第1章 計算機和C++編程入門 1
概述 2
1.1 計算機系統(tǒng) 2
1.1.1 硬件 2
1.1.2 軟件 5
1.1.3 高級語言 6
1.1.4 編譯器 7
1.1.5 歷史回顧 9
1.2 編程和問題求解 10
1.2.1 算法 10
1.2.2 程序設計 11
1.2.3 面向對象編程 12
1.2.4 軟件的生命周期 13
1.3 C++入門 14
1.3.1 C++語言的起源 14
1.3.2 一個C++示范程序 15
1.3.3 陷阱:在\n中錯誤地使用斜杠 17
1.3.4 編程提示:輸入和輸出語法 17
1.3.5 簡單C++程序的布局 18
1.3.6 陷阱:在include的文件名前錯誤地添加一個空格 19
1.3.7 編譯和運行C++程序 20
1.3.8 編程提示:讓程序運行起來 20
1.4 測試和調試 23
1.4.1 程序錯誤的分類 23
1.4.2 陷阱:錯誤地假定程序正確 24
小結 25
自測題答案 25
編程項目 26
第2章 C++基礎知識 29
概述 30
預備知識 30
2.1 變量和賦值 30
2.1.1 變量 30
2.1.2 名稱:標識符 32
2.1.3 變量聲明 33
2.1.4 賦值語句 34
2.1.5 陷阱:未初始化的變量 35
2.1.6 編程提示:使用有意義的名稱 36
2.2 輸入和輸出 37
2.2.1 使用cout進行輸出 37
2.2.2 include預編譯指令和命名空間 38
2.2.3 轉義序列 39
2.2.4 編程提示:用\n或endl終止每一個程序 40
2.2.5 格式化帶小數點的數字 41
2.2.6 用cin進行輸入 42
2.2.7 設計輸入和輸出 43
2.2.8 編程提示:I/O中的換行 43
2.3 數據類型和表達式 45
2.3.1 int類型和double類型 45
2.3.2 其他數字類型 46
2.3.3 char類型 47
2.3.4 bool類型 48
2.3.5 string類簡介 48
2.3.6 類型的兼容性 50
2.3.7 算術操作符和表達式 51
2.3.8 陷阱:除法中的整數 53
2.3.9 更多賦值語句 54
2.4 簡單控制流程 55
2.4.1 一個簡單的分支機制 55
2.4.2 陷阱:連續(xù)的不等式 59
2.4.3 陷阱:在該用==的時候錯用了= 59
2.4.4 復合語句 60
2.4.5 簡單的循環(huán)機制 62
2.4.6 遞增操作符和遞減操作符 65
2.4.7 編程實例:信用卡余額 65
2.4.8 陷阱:無限循環(huán) 66
2.5 程序風格 69
2.5.1 縮進 69
2.5.2 注釋 69
2.5.3 為常量命名 71
小結 73
自測題答案 73
編程項目 76
第3章 更多的控制流程 81
概述 82
預備知識 82
3.1 使用布爾表達式 82
3.1.1 布爾表達式求值 82
3.1.2 陷阱:將布爾表達式轉換成int值 85
3.1.3 枚舉類型(選讀) 87
3.2 多路分支 88
3.2.1 嵌套語句 88
3.2.2 編程提示:在嵌套語句中使用花括號 88
3.2.3 多路if-else語句 90
3.2.4 編程實例:州收入稅 92
3.2.5 switch語句 94
3.2.6 陷阱:忘記在switch語句中添加break 97
3.2.7 為菜單使用switch語句 97
3.2.8 語句塊 98
3.2.9 陷阱:疏忽局部變量 100
3.3 C++循環(huán)語句詳解 102
3.3.1 while語句回顧 102
3.3.2 再論遞增操作符和遞減操作符 103
3.3.3 for語句 105
3.3.4 陷阱:for語句中多余的分號 109
3.3.5 應該使用哪種循環(huán) 109
3.3.6 陷阱:未初始化的變量和無限循環(huán) 111
3.3.7 break語句 111
3.3.8 陷阱:嵌套循環(huán)中的break語句 112
3.4 設計循環(huán) 113
3.4.1 求和與求乘積的循環(huán) 113
3.4.2 終止循環(huán) 114
3.4.3 嵌套循環(huán) 116
3.4.4 調試循環(huán) 118
小結 121
自測題答案 121
編程項目 125
第4章 過程抽象和返回一個值的函數 129
概述 130
預備知識 130
4.1 自頂向下設計 130
4.2 預定義函數 130
4.2.1 使用預定義函數 131
4.2.2 強制類型轉換 134
4.2.3 強制類型轉換的古老形式 136
4.2.4 陷阱:整數除法丟棄了小數部分 136
4.3 程序員自定義函數 138
4.3.1 函數定義 138
4.3.2 能返回布爾值的函數 142
4.3.3 另一種形式的函數聲明 142
4.3.4 陷阱:實參順序錯誤 143
4.3.5 函數定義語法總結 144
4.3.6 再論函數定義的位置 144
4.3.7 編程提示:在分支語句中使用函數調用 145
4.4 過程抽象 146
4.4.1 黑盒的比喻 146
4.4.2 編程提示:選擇形參名稱 147
4.4.3 編程提示:嵌套循環(huán) 148
4.4.4 案例分析:購買比薩 150
4.4.5 編程提示:使用偽代碼 155
4.5 局部變量 156
4.5.1 函數如同小程序 156
4.5.2 編程實例:豌豆試驗田 158
4.5.3 全局常量和全局變量 158
4.5.4 傳值調用形參是局部變量 160
4.5.5 再論命名空間 161
4.5.6 編程實例:階乘函數 163
4.6 重載函數名稱 165
4.6.1 重載入門 165
4.6.2 編程實例;購買比薩(修訂版) 167
4.6.3 自動類型轉換 169
小結 171
自測題答案 171
編程項目 174
第5章 所有子任務的函數 177
概述 178
預備知識 178
5.1 void函數 178
5.1.1 void函數的定義 178
5.1.2 編程實例:溫度換算 180
5.1.3 void函數中的return語句 181
5.2 傳引用調用形參 183
5.2.1 初探傳引用調用 183
5.2.2 傳引用調用詳解 185
5.2.3 編程實例:swap_values函數 187
5.2.4 混合的參數列表 188
5.2.5 編程提示:應該使用哪種參數 189
5.2.6 陷阱:疏忽造成的局部變量 190
5.3 使用過程抽象 192
5.3.1 由函數來調用函數 192
5.3.2 前條件和后條件 193
5.3.3 案例分析:超市定價系統(tǒng) 194
5.4 測試和調試函數 199
5.5 常規(guī)調試技術 203
5.5.1 不抱成見 203
5.5.2 檢查常見錯誤 203
5.5.3 定位錯誤 203
5.5.4 assert宏 204
小結 206
自測題答案 206
編程項目 209
第6章 I/O流——對象和類入門 213
概述 214
預備知識 214
6.1 流和基本文件I/O 214
6.1.1 文件之于I/O的重要性 215
6.1.2 文件I/O 215
6.1.3 類與對象入門 218
6.1.4 編程提示:檢查文件是否成功打開 220
6.1.5 文件I/O技術 222
6.1.6 追加到文件(選讀) 224
6.1.7 文件名作為輸入(選讀) 225
6.2 流I/O工具 228
6.2.1 用流函數格式化輸出 228
6.2.2 操縱元 231
6.2.3 流作為函數實參 233
6.2.4 編程提示:檢查文件尾 234
6.2.5 命名空間的問題 235
6.2.6 編程實例:整理文件格式 236
6.3 字符I/O 238
6.3.1 get和put成員函數 238
6.3.2 putback成員函數(選讀) 241
6.3.3 編程實例:檢查輸入 241
6.3.4 陷阱:輸入中不期而遇的\n 243
6.3.5 eof成員函數 245
6.3.6 編程實例:編輯文本文件 247
6.3.7 預定義的字符函數 248
6.3.8 陷阱:toupper和tolower返回值 249
小結 251
自測題答案 251
編程項目 255
第7章 數組 261
概述 262
預備知識 262
7.1 數組入門 262
7.1.1 聲明和引用數組 262
7.1.2 編程提示:為數組使用for循環(huán) 264
7.1.3 陷阱:數組索引總是從零開始 264
7.1.4 編程提示:為數組長度使用一個已定義常量 264
7.1.5 數組在內存中的表示 265
7.1.6 陷阱:數組索引越界 266
7.1.7 初始化數組 267
7.2 函數中的數組 269
7.2.1 索引變量作為函數參數 269
7.2.2 整個數組作為函數參數 270
7.2.3 const參數修飾符 273
7.2.4 陷阱:不一致地使用const參數 274
7.2.5 返回數組的函數 275
7.2.6 案例分析:產量圖 275
7.3 數組編程 285
7.3.1 部分填充數組 285
7.3.2 編程提示:不要吝嗇形參 287
7.3.3 編程實例:數組搜索 287
7.3.4 編程實例:數組排序 289
7.4 多維數組 293
7.4.1 多維數組基礎 293
7.4.2 多維數組參數 294
7.4.3 編程實例:二維打分程序 295
7.4.4 陷阱:在數組索引之間使用逗號 297
小結 299
自測題答案 299
編程項目 302
第8章 字符串和向量 309
概述 310
預備知識 310
8.1 字符串的一種數組類型 310
8.1.1 C字符串值和C字符串變量 311
8.1.2 陷阱:為C字符串使用=和== 313
8.1.3 (cstring)中的其他函數 315
8.1.4 C字符串輸入和輸出 318
8.1.5 C字符串到數字的轉換和可靠輸入 320
8.2 標準string類 324
8.2.1 標準類string簡介 324
8.2.2 string類的I/O 326
8.2.3 編程提示:getline的其他版本 328
8.2.4 陷阱:混合使用“cin ))變量;”和getline 329
8.2.5 用string類進行字符串處理 330
8.2.6 編程實例:回文測試 333
8.2.7 string對象和C字符串之間的轉換 335
8.3 向量 337
8.3.1 向量基礎知識 337
8.3.2 陷阱:使用方括號時超出向量長度 339
8.3.3 編程提示:向量賦值具有良好行為 340
8.3.4 效率問題 340
小結 342
自測題答案 342
編程項目 344
第9章 指針和動態(tài)數組 349
概述 350
預備知識 350
9.1 指針 350
9.1.1 指針變量 351
9.1.2 基本內存管理 356
9.1.3 陷阱:虛懸指針 356
9.1.4 靜態(tài)變量和自動變量 356
9.1.5 編程提示:定義指針類型 357
9.2 動態(tài)數組 359
9.2.1 數組變量和指針變量 359
9.2.2 創(chuàng)建和使用動態(tài)數組 360
9.2.3 指針運算(選讀) 363
9.2.4 多維動態(tài)數組(選讀) 364
小結 367
自測題答案 367
編程項目 368
第10章 定義類 371
概述 372
預備知識 372
10.1 結構 372
10.1.1 用于異種數據的結構 372
10.1.2 陷阱:結構定義中忘記添加分號 376
10.1.3 結構作為函數參數 376
10.1.4 編程提示:使用層次化結構 377
10.1.5 對結構進行初始化 378
10.2 類 381
10.2.1 定義類和成員函數 381
10.2.2 公共成員和私有成員 384
10.2.3 編程提示:將所有成員變量變成私有 389
10.2.4 編程提示:定義取值函數和賦值函數 390
10.2.5 編程提示:將賦值操作符用于對象 391
10.2.6 編程實例:BankAccount類(版本1) 391
10.2.7 總結類的一些特征 395
10.2.8 用于初始化的構造函數 396
10.2.9 編程提示:總是包括一個默認構造函數 401
10.2.10 陷阱:無參數構造函數 402
10.3 抽象數據類型 404
10.3.1 用于生成抽象數據類型的類 404
10.3.2 編程實例:類的另一種實現 407
10.4 繼承 411
10.4.1 流類之間的繼承關系 411
10.4.2 編程實例:另一個new_line函數 414
10.4.3 函數的默認參數(選讀) 414
10.4.4 定義派生類 415
小結 419
自測題答案 419
編程項目 424
第11章 類中的友元函數、重載操作符和數組 429
概述 430
預備知識 430
11.1 友元函數 430
11.1.1 編程實例:一個相等性函數 430
11.1.2 友元函數 432
11.1.3 編程提示:定義取值函數和友元函數 434
11.1.4 編程提示:同時使用成員函數和非成員函數 434
11.1.5 編程實例:Money類(版本1) 435
11.1.6 實現digit_to_int(選讀) 440
11.1.7 陷阱:數字常量中的前置零 440
11.1.8 const參數修飾符 441
11.1.9 陷阱:不一致地使用const 443
11.2 重載操作符 446
11.2.1 重載操作符 446
11.2.2 用于自動類型轉換的構造函數 449
11.2.3 重載一元操作符 450
11.2.4 重載))和(( 451
11.3 數組和類 458
11.3.1 類數組 458
11.3.2 數組作為類成員 460
11.3.3 編程實例:用于部分填充數組的一個類 461
11.4 類和動態(tài)數組 464
11.4.1 編程實例:一個字符串變量類 464
11.4.2 析構函數 466
11.4.3 陷阱:指針作為傳值調用參數 468
11.4.4 拷貝構造函數 469
11.4.5 重載賦值操作符 473
小結 476
自測題答案 476
編程項目 482
第12章 獨立編譯和命名空間 489
概述 490
預備知識 490
12.1 獨立編譯 490
12.1.1 ADT回顧 490
12.1.2 案例分析:一個獨立編譯的類DigitalTime 491
12.1.3 使用#ifndef 498
12.1.4 編程提示:定義其他庫 500
12.2 命名空間 502
12.2.1 命名空間和using預編譯指令 502
12.2.2 創(chuàng)建命名空間 503
12.2.3 限定名稱 505
12.2.4 命名空間的微妙之處(選讀) 506
12.2.5 無名命名空間 507
12.2.6 編程提示:為命名空間選擇一個名稱 510
12.2.7 陷阱:混淆全局命名空間和無名命名空間 511
小結 513
自測題答案 513
編程項目 514
第13章 指針和鏈表 517
概述 518
預備知識 518
13.1 節(jié)點和鏈表 518
13.1.1 節(jié)點 518
13.1.2 鏈表 522
13.1.3 在表頭插入一個節(jié)點 523
13.1.4 陷阱:丟失節(jié)點 525
13.1.5 搜索鏈表 526
13.1.6 指針作為迭代器 528
13.1.7 在列表中插入和移除節(jié)點 529
13.1.8 陷阱:為動態(tài)數據結構
使用賦值操作符 531
13.1.9 鏈表的變體 532
13.1.10 由類構成的鏈表 534
13.2 棧和隊列 537
13.2.1 棧 537
13.2.2 編程實例:一個棧類 537
13.2.3 隊列 541
13.2.4 編程實例:一個隊列類 541
小結 545
自測題答案 545
編程項目 547
第14章 遞歸 551
概述 552
預備知識 552
14.1 面向任務的遞歸函數 553
14.1.1 案例分析:垂直數字 553
14.1.2 深入遞歸 558
14.1.3 陷阱:無窮遞歸 559
14.1.4 用于遞歸的棧 560
14.1.5 陷阱:棧溢出 561
14.1.6 遞歸與迭代 561
14.2 面向值的遞歸函數 563
14.2.1 要返回值的遞歸函數的常規(guī)形式 563
14.2.2 編程實例:另一個Powers函數 563
14.3 遞歸思想 567
14.3.1 遞歸設計技術 567
14.3.2 案例分析:二叉搜索(遞歸思想示例) 568
14.3.3 編程實例:一個遞歸成員函數 574
小結 577
自測題答案 577
編程項目 580
第15章 繼承 583
概述 584
預備知識 584
15.1 繼承基礎 584
15.1.1 派生類 585
15.1.2 派生類中的構造函數 590
15.1.3 陷阱:使用來自基類的私有成員變量 592
15.1.4 陷阱:私有成員函數根本不會繼承 593
15.1.5 protected限定符 593
15.1.6 重定義成員函數 595
15.1.7 重定義與重載的比較 597
15.1.8 訪問重定義的基函數 598
15.2 繼承細節(jié) 600
15.2.1 不繼承的函數 600
15.2.2 派生類中的賦值操作符和拷貝構造函數 600
15.2.3 派生類中的析構函數 601
15.3 多態(tài)性 603
15.3.1 晚期綁定 603
15.3.2 C++中的虛函數 604
15.3.3 虛函數和擴展類型兼容性 607
15.3.4 陷阱:切片問題 610
15.3.5 陷阱:不使用虛成員函數 610
15.3.6 陷阱:試圖對虛成員函數
定義不齊全的類進行編譯 611
15.3.7 編程提示:虛析構函數 611
小結 613
自測題答案 613
編程項目 616
第16章 異常處理 621
概述 622
預備知識 622
16.1 異常處理基礎 623
16.1.1 異常處理的一個玩具式
例子 623
16.1.2 定義自己的異常類 629
16.1.3 多個throw和catch 630
16.1.4 陷阱:首先捕捉較具體的異常 632
16.1.5 編程提示:異常類可能微不足道 633
16.1.6 在函數中拋出異常 633
16.1.7 異常規(guī)范 634
16.1.8 陷阱:派生類中的異常規(guī)范 636
16.2 用于異常處理的編程技術 637
16.2.1 拋出異常的時機 637
16.2.2 陷阱:未捕捉的異常 638
16.2.3 陷阱:嵌套的try-catch塊 638
16.2.4 陷阱:濫用異常 638
16.2.5 異常類層次結構 638
16.2.6 測試可用內存 639
16.2.7 重新拋出異常 639
小結 640
自測題答案 640
編程項目 641
第17章 模板 643
概述 644
預備知識 644
17.1 用于算法抽象的模板 644
17.1.1 函數模板 645
17.1.2 陷阱:編譯器的復雜性 648
17.1.3 編程實例:一個泛化的排序函數 649
17.1.4 編程提示:如何定義模板 652
17.1.5 陷阱:為不恰當的類型使用模板 652
17.2 用于數據抽象的模板 653
17.2.1 類模板的語法 653
17.2.2 編程實例:一個數組類 655
小結 659
自測題答案 659
編程項目 661
第18章 標準模板庫 663
概述 664
預備知識 664
18.1 迭代器 664
18.1.1 using聲明 665
18.1.2 迭代器的基礎知識 665
18.1.3 陷阱:編譯器問題 669
18.1.4 迭代器的種類 670
18.1.5 常量和可變迭代器 672
18.1.6 逆向迭代器 673
18.1.7 其他種類的迭代器 675
18.2 容器 676
18.2.1 順序容器 676
18.2.2 陷阱:迭代器和移除元素 679
18.2.3 編程提示:容器中的類型定義 679
18.2.4 容器配接器stack和queue 679
18.2.5 關聯容器set和map 682
18.2.6 效率問題 686
18.3 泛型算法 688
18.3.1 運行時間和大O表示法 688
18.3.2 容器訪問運行時間 691
18.3.3 不可修改的序列算法 692
18.3.4 容器修改算法 695
18.3.5 set算法 696
18.3.6 排序算法 697
小結 698
自測題答案 698
編程項目 699
附錄1 C++關鍵字 703
附錄2 操作符的優(yōu)先級 704
附錄3 ASCII字符集 705
附錄4 部分庫函數 706
附錄5 內聯函數 710
附錄6 重載數據索引方括號 711
附錄7 this指針 712
附錄8 將操作符重載為成員操作符 714

本目錄推薦

掃描二維碼
Copyright ? 讀書網 ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號