Hello,World!
本书版本:《C++ Primer Plus(第6版)中文版》
C++是在C语言基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言,是C语言的超集。
本书是根据2003年的ISO/ANSI C++标准编写的。
本书内容(18章+10附录)
第1章
预备知识:本章介绍Bjarne Stroustrup如何通过在C语言的基础上添加面向对象编程的支持,来创造C++编程语言。讨论面向过程语言(如C语言)与面向对象语言(如C++)之间的区别。您将了解ANSI/ISO在制定C++标准方面所做的工作。本章还讨论了创建C++程序的技巧,介绍了当前几种C++编译器使用的方法。
第2章
开始学习C++:本章介绍创建简单C++程序的步骤。您可以学到main()函数扮演的角色以及C++程序使用的一些语句。您将使用预定义的cout和cin对象来实现程序输出和输入,学习如何创建和使用变量。最后,本章还将介绍函数——C++的编程模块。
第3章
处理数据:C++提供了内置类型来存储两种数据:整数和浮点数。为满足程序员的各种需求,C++为每一种数据都提供了几个类型。本章将要讨论这些类型,包括创建变量和编写各种类型的常量。另外,还将讨论C++是如何处理不同类型之间的隐式和显式转换的。
第4章
复合类型:C++让程序员能够使用基本的内置类型来创建更复杂的类型。最高级的形式是类,这将在第9章~第13章讨论。本章讨论其他形式,包括数组(存储多个同类型的值)、结构(存储多个不同类型的值,结构体)、指针(标识内存位置)。您还将学习如何创建和存储文本字符串及如何使用C风格字符数组和C++ string类来处理文本输入和输出。最后,还将学习C++处理内存分配的一些方法,其中包括用于显式地管理内存的new和delete运算符。
第5章
循环和关系表达式:程序经常需要执行重复性操作,为此C++提供了三种循环结构:for循环、while循环和do while循环。这些循环必须知道何时终止,C++的关系运算符使程序员能够创建测试来引导循环。本章还将介绍如何创建逐字符串读取和处理驶入的循环。最后,您将学习如何创建二维数组以及如何使用嵌套循环来处理他们。
第6章
分支语句和逻辑运算符:如果程序可以根据实际情况调整执行,我们就说程序能够智能地行动。在本章,您将了解如何使用if、if else和switch语句及条件运算符来控制程序流程,学习如何使用逻辑运算符来表达决策测试。另外,本章还介绍确定自负关系(如测试字符是数字还是非打印字符)的函数库cctype。最后,还将简要介绍文件输入/输出。
第7章
函数——C++的编程模块:函数是C++的基本编程不见。本章重点介绍C++函数与C函数共同的特性。具体地说,您将复习函数定义个通用格式,了解函数原型是如何提高程序可靠性的。同时,还将学习如何编写函数来处理数组、字符串和结构。还要学习有关递归的知识(即函数在什么情况下调用自身)以及如何用它来实现分而治之的策略。最后将介绍函数指针,它是程序员能够通过函数参数来命令函数使用另一个函数。
第8章
函数探幽:本章将探索C++中函数新增的特性。
您将学习内联函数,它可以提高程序的执行速度,但会增加程序的长度;
还将使用引用变量,它提供了另一种将信息传递给函数的方式。
默认参数使函数能够自动为函数调用中省略的函数参数提供值。
函数重载使程序员能够创建多个参数列表不同的同名函数。类设计中经常使用这些特性。
另外,您还将学习函数模板,它们使程序员能够指定相关函数族的设计。
第9章
内存模型和名称空间:本章讨论如何创建多文件程序,介绍分配内存的各种方式、管理内存的各种方式以及作用域、链接、名称空间,这些内容决定了变量在程序的哪些部分是可见的。
第10章
对象和类:类是用户定义的类型,对象(如变量)是类的实例。本章介面向对象编程和类设计。对象声明描述的是存储在对象中的信息以及可对对象执行的操作(类方法)。对象的某些组成部分对于外界来说是可见的(公有部分),而某些部分缺是隐藏的(私有部分)。特殊的类方法(构造函数和析构函数)在对象创建和释放时发挥作用。在本章中,您将学习所有这些内容以及其他类知识,了解如何使用类来实现ADT,如栈。
第11章
使用类:在本章中,您将深入了解类。首先了解运算符重载,它使程序员能够定义与类对象一起使用的运算符,如+。
还将学习友元函数,这些函数可以访问外部世界不可访问的类数据。
同时还将了解一些构造函数和重载运算符成员函数是如何被用来管理类类型转换的。
第12章
类和动态内存分配:一般来说,让类成员指向动态分配的内存很有用。如果程序员在类构造函数中使用new来分配动态内存,就有责任提供适当的析构函数,定义显式拷贝构造函数和显式赋值运算符。本章介绍了在程序员没有提供显式定义时,将如何隐式地生成成员函数以及这些成员函数的行为。您还将通过使用对象指针,了解队列模拟问题,扩充类方面的知识。
第13章
类继承:在面向对象编程中,继承是功能最强大的特性之一,通过继承,派生类可以继承基类的特性,可重用基类代码。本章讨论公有继承,这种继承模拟了is-a关系,即派生对象是基类的特例。例如:物理学家是科学家的特例。有些继承关系是多态的,这意味着相同的方法名称可能导致依赖于对象类型的行为。要实现这种行为,需要使用一种新的成员函数——虚函数。有时,使用抽象基类是实现继承关系的最佳方式。本章讨论这些问题,说明了公有继承在什么情况下合适,在什么情况下不合适。
第14章
C++中的代码重用:公有继承只是代码重用的方式之一。本章将介绍其他几种方式。如果一个类包含了另一个类的对象,则成为包含。包含可以用来模拟has-a关系,其中一个类包含另一个类的对象。例如:汽车有马达。也可以使用私有继承和保护继承来模拟这种关系。本章说明了各种方法之间的区别。同时,您还将学习类模板,他让程序员能够使用泛型来定义类,然后使用模板根据具体类型创建特定的类。例如,栈模板使程序员能够创建整数栈或字符串栈。最后,本章还将介绍多重公有继承,使用这种方法,一个类可以从多个类派生而来。
第15章
友元、异常和其他:本章扩展了对友元的讨论,讨论了友元类和友元成员函数。然后从异常开始介绍了C++的几项新特性。异常为处理程序异常提供了一种机制,如函数参数值不正确或内存耗尽等。您还将学习RTTI,这种机制用来确定对象类型。最后,本章还将介绍一种更安全的方法来替代不受限制的强制类型转换。
第16章
srting类和标准模板类:本章讨论C++语言中新增的一些类库。对于传统的C-风格字符串来说,string类是一种方便且功能强大的替代方式。auto_ptr类帮助管理动态分配的内存。STL提供了几种类容器(包括数组、队列、链表、集合和映射)的模板表示。它还提供了搞笑的泛型算法库,这些算法可用于STL容器,也可用于常规数组。模板类valarray为数值数组提供了支持。
第17章
输入、输出和文件:本章复习C++ I/O,并讨论如何格式化输出。您将要学习如何使用类方法来确定输入或输出流的状态,了解输入类型是否匹配或是否检测到了文件尾。C++使用继承来派生用于管理文件输入和输出的类。您将学习如何打开文件,以进行输入和输出,如何在文件中追加数据,如何使用二进制文件,如何好的对文件的随机访问权。最后,还将学习如何使用标准的I/O方法来读取和写入字符串。
第18章
探讨C++新标准:本章首先复习之前介绍过的几项C++11新功能,包括新类型、统一的初始化语法、自动类型推断、新的智能指针以及作用域内枚举。然后,讨论新增的右值引用类型以及如何使用它来实现移动语义。接下来,介绍了新增类功能、lambda表达式和可变参数模板。最后,概述了众多其他的新功能。
附录A
技术系统:讨论八进制数、十六进制数和二进制数。
附录B
C++保留字
附录C
ASCII字符集
附录D
运算符优先级
附录E
其它运算符:总结了正文中没有介绍的其他C++运算符,如按位运算符。
附录F
模板类string
附录G
标准模板库方法和函数:总结了STL容器方法和通用的STL算法函数。
附录H
精选读物和网上资源
附录I
转换为ISO标准C++:奔赴路提供了从C和老式C++是先到标准C++的转换指南。
附录J
复习题答案