内容简介
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++的强大之处,并自信地应用于各种复杂的软件开发项目中。