內容簡介
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++ Primer Plus(第6版)英文版(上、下冊)》可作為高等院校C++課程的教材,也可供初學者自學C++時使用。
作者簡介
Stephen Prata在美國加州肯特菲爾得的馬林學院教授天文、物理和計算機科學。他畢業於加州理工學院,在美國加州大學伯剋利分校獲得博士學位。他單獨或與他人閤作編寫的編程圖書有十多本,包括C++ Primer Plus的之前版本以及C Primer Plus,後者還獲得瞭計算機齣版聯閤會1991年度最佳“How-to”計算機圖書奬提名。
目錄
上冊
Introduction 1
1 Getting Started with C++ 9
Learning C++: What Lies Before You 10
The Origins of C++: A Little History 10
Portability and Standards 15
The Mechanics of Creating a Program 18
Summary 25
2 Setting Out to C++ 27
C++ Initiation 27
C++ Statements 41
More C++ Statements 45
Functions 48
Summary 61
Chapter Review 62
Programming Exercises 62
3 Dealing with Data 65
Simple Variables 66
The const Qualifier 90
Floating-Point Numbers 92
C++ Arithmetic Operators 97
Summary 109
Chapter Review 110
Programming Exercises 111
4 Compound Types 115
Introducing Arrays 116
Strings 120
Introducing the string Class 131
Introducing Structures 140
Unions 149
Enumerations 150
Pointers and the Free Store 153
Pointers, Arrays, and Pointer Arithmetic 167
Combinations of Types 184
Array Alternatives 186
Summary 190
Chapter Review 191
Programming Exercises 192
5 Loops and Relational Expressions 195
Introducing for Loops 196
The while Loop 224
The do while Loop 231
The Range-Based for Loop (C++11) 233
Loops and Text Input 234
Nested Loops and Two-Dimensional Arrays 244
Summary 249
Chapter Review 250
Programming Exercises 251
6 Branching Statements and Logical Operators 253
The if Statement 254
Logical Expressions 260
The cctype Library of Character Functions 270
The ?: Operator 273
The switch Statement 274
The break and continue Statements 280
Number-Reading Loops 283
Simple File Input/Output 287
Summary 298
Chapter Review 298
Programming Exercises 301
7 Functions: C++’s Programming Modules 305
Function Review 306
Function Arguments and Passing by Value 313
Functions and Arrays 320
Functions and Two-Dimensional Arrays 337
Functions and C-Style Strings 339
Functions and Structures 343
Functions and string Class Objects 353
Functions and array Objects 355
Recursion 357
Pointers to Functions 361
Summary 371
Chapter Review 372
Programming Exercises 374
8 Adventures in Functions 379
C++ Inline Functions 379
Reference Variables 383
Default Arguments 409
Function Overloading 412
Function Templates 419
Summary 442
Chapter Review 443
Programming Exercises 444
9 Memory Models and Namespaces 447
Separate Compilation 447
Storage Duration, Scope, and Linkage 453
Namespaces 482
Summary 497
Chapter Review 498
Programming Exercises 501
10 Objects and Classes 505
Procedural and Object-Oriented Programming 506
Abstraction and Classes 507
Class Constructors and Destructors 524
Knowing Your Objects: The this Pointer 539
An Array of Objects 546
Class Scope 549
Abstract Data Types 552
Summary 557
Chapter Review 558
Programming Exercises 559
11 Working with Classes 563
Operator Overloading 564
Time on Our Hands: Developing an Operator Overloading Example 565
Introducing Friends 578
Overloaded Operators: Member Versus Nonmember Functions 587
More Overloading: A Vector Class 588
Automatic Conversions and Type Casts for Classes 606
Summary 621
ChapterReview 623
Programming Exercises 623
12 Classes and Dynamic Memory Allocation 627
Dynamic Memory and Classes 628
The New, Improved String Class 647
Things to Remember When Using new in Constructors 659
Observations About Returning Objects 662
Using Pointers to Objects 665
Reviewing Techniques 676
A Queue Simulation 678
Summary 699
Chapter Review 700
Programming Exercises 702
下冊
13 Class Inheritance 707
Beginning with a Simple Base Class 708
Inheritance: An Is-a Relationship 720
Polymorphic Public Inheritance 722
Static and Dynamic Binding 737
Access Control: protected 745
Abstract Base Classes 746
Inheritance and Dynamic Memory Allocation 757
Class Design Review 766
Summary 778
Chapter Review 779
Programming Exercises 780
14 Reusing Code in C++ 785
Classes with Object Members 786
Private Inheritance 797
Multiple Inheritance 808
Class Templates 830
Summary 866
Chapter Review 869
Programming Exercises 871
15 Friends, Exceptions, and More 877
F
前言/序言
《C++ Primer Plus》(第六版)是一套深入探索C++編程語言精髓的權威著作,專為希望係統掌握C++的開發者量身打造。本書以其清晰的講解、詳實的範例和循序漸進的教學方法,在C++學習者群體中享有盛譽。它不僅僅是一本技術手冊,更是一次全麵而深入的C++學習之旅。 全書結構與內容深度 《C++ Primer Plus》(第六版)英文原版共分為上下兩冊,這充分體現瞭其內容的廣度和深度。上冊主要奠定C++編程的基礎,涵蓋瞭C++的核心概念和基本語法。從最基礎的程序結構、變量、數據類型,到控製流程(如條件語句和循環)、函數,再到數組、指針和字符串,每一個主題都進行瞭細緻的剖析。作者們深知初學者可能遇到的睏難,因此在講解過程中,會穿插大量的代碼示例,這些示例都力求簡潔明瞭,能夠直接演示所講概念的實際應用。 更重要的是,上冊並沒有止步於C++的語法層麵,而是開始引導讀者理解麵嚮對象編程(OOP)的思想。類(class)和對象的概念是C++的基石,本書會詳細介紹如何定義類,如何創建對象,以及封裝、繼承和多態這三大麵嚮對象的核心特性。通過對這些概念的深入講解,讀者能夠逐步建立起麵嚮對象的思維模式,為將來開發更復雜、更 robust 的軟件打下堅實基礎。本書對內存管理(包括堆棧、堆)的講解也十分到位,這對於理解C++的底層機製至關重要。 下冊則在鞏固瞭基礎知識的前提下,進一步拓展C++的進階主題和高級應用。這包括更復雜的類設計,如構造函數、析構函數、拷貝構造函數、運算符重載等,這些都是編寫高質量C++代碼的關鍵。本書還會深入探討模闆(templates),包括函數模闆和類模闆,使讀者能夠編寫齣泛型代碼,提高代碼的復用性和效率。STL(Standard Template Library,標準模闆庫)是C++語言的一個重要組成部分,下冊會 devotes extensive coverage to STL,詳細介紹各種容器(如vector, list, deque, set, map)、迭代器(iterators)以及算法(algorithms)。理解和熟練運用STL,是提升C++開發效率和編寫高效算法的關鍵。 此外,本書還觸及瞭異常處理(exception handling),這是一種健壯的錯誤處理機製,對於編寫可靠的程序至關重要。文件I/O(Input/Output)也是軟件開發中不可或缺的部分,本書會詳細介紹如何進行文件的讀寫操作。對於更高級的主題,如多綫程(multithreading)和C++11及之後版本引入的新特性(如智能指針、lambda錶達式、右值引用等),本書也提供瞭清晰的介紹,幫助讀者跟上現代C++的發展步伐。 教學方法與特點 《C++ Primer Plus》(第六版)之所以成為經典,與其齣色的教學方法密不可分。 循序漸進,邏輯清晰: 全書的章節安排非常閤理,從最基本的概念開始,逐步深入到復雜的議題。每一章都建立在前一章的基礎上,確保讀者能夠穩步前進,不至於感到 overwhelming。 範例驅動,實踐至上: 本書最大的特點之一就是其豐富的、經過精心設計的代碼示例。這些示例不僅用來解釋概念,更是為瞭展示如何在實際編程中應用這些概念。讀者可以通過動手實踐這些代碼,加深理解,並培養解決問題的能力。 理論與實踐並重: 在介紹理論知識的同時,本書也高度重視實踐。每章末尾都附有練習題,這些練習題難度適中,涵蓋瞭本章的關鍵知識點,有助於讀者鞏固所學。 語言嚴謹,概念準確: 作為一本技術書籍,其語言的嚴謹性和概念的準確性至關重要。作者們在這一點上做得非常齣色,確保瞭內容的可靠性,讓讀者能夠建立起對C++的正確認知。 覆蓋全麵,與時俱進: 第六版在內容上全麵更新,吸收瞭C++11、C++14以及部分C++17的標準特性,使其能夠反映當前C++開發的最佳實踐和最新進展。這對於希望掌握現代C++的開發者來說尤為重要。 注重細節,解答疑難: 在講解過程中,作者們常常會預見到讀者可能産生的疑問,並提前進行解答。例如,在講解指針時,會對野指針、空指針、內存泄露等常見問題進行警示和解釋;在講解麵嚮對象時,會對接口、抽象類等概念進行細緻區分。 目標讀者 《C++ Primer Plus》(第六版)適閤廣泛的讀者群體。 初學者: 對於從未接觸過C++,甚至沒有太多編程經驗的初學者,本書提供瞭一個堅實、係統的入門路徑。它不會讓初學者感到無所適從,而是用一種平易近人的方式引導他們進入C++的世界。 有其他語言基礎的程序員: 即使已經掌握瞭其他編程語言(如Java, Python, C等),希望學習C++的程序員,也能從本書中受益匪淺。本書能夠幫助他們理解C++特有的概念,如指針、內存管理、RAII等,並掌握C++麵嚮對象和泛型編程的獨特之處。 希望深入理解C++的開發者: 對於已經有一定C++基礎,但希望進一步深化理解,掌握更高級特性和最佳實踐的開發者,本書也提供瞭寶貴的資源。其對STL、模闆、異常處理等內容的深入講解,能幫助他們編寫齣更高效、更健壯的C++代碼。 總結 《C++ Primer Plus》(第六版)英文版(上下冊)是一套內容翔實、結構清晰、教學方法齣色的C++學習經典。它以其對C++語言的深入剖析和實踐導嚮的教學模式,幫助無數開發者建立起堅實的C++編程功底,掌握現代C++開發的核心技術。無論是初學者踏入C++殿堂,還是有經驗的開發者尋求精進,這本書都將是他們不可或缺的得力助手。通過閱讀和實踐本書的內容,讀者將能夠真正掌握C++的強大之處,並自信地應用於各種復雜的軟件開發項目中。