完美C++(第5版)

完美C++(第5版)

大小:19.09M

更新时间:23-08-28

系统:Pc

开始下载

完美C++(第5版)是一本c++语言学习教材,是美国常青藤名校十数年指定C++教材,它由加州大学圣迭戈分校计算机科学与工程系教授Walter Savitch萨维奇编著。本书很全面地介绍了c++语言的相关知识,其内容布置清晰、简明各章均有大量例子及完整的代码段和分析,并且还详细介绍了继承、多态、异常处理和标准模板库(STL)等c++相关知识,有利于读者对关键概念的理解,为读者提供了一个学习、理解和掌握C++编程语言的全面视图,覆盖面广、实用性非常强,是本不可多得的好书。

完美C++(第5版)采用了第4版相同的编程哲学,主要更新内容包括:第1章增加了字符串类的简单介绍,第2章增加了文本文件数据读取的简单介绍;第12章增加了对stringstream的价绍;第13章简捷地介绍了尾递归的概念并且给出了一个相互递归的例子;另外增加了10个自测练习题和25个编程项目练习。

内容介绍

完美C++(第5版)为读者提供了一个学习、理解和掌握 C++编程语言的全面视图,覆盖面广、实用性强。书中介绍了 C++的基本数据类型,如字符串、数组、指针、结构体、类等,同时也详细描述了面向对象编程语言的特性:封装、继承和多态,以及这些特性在 C++语言中的具体使用方式。本书的后面章节还重点介绍了模板、链式数据结构、标准模板库以及异常处理等C++语言的进阶编程知识。这些知识在从事具体编程工作时会经常使用到。

完美C++(第5版)对C++的一些重点知识,辅以实例进行了重点讲解,特别是对一些易混淆、易犯错的知识点,专门以“陷阱”的组织方式进行深入分析和讨论,帮助读者更好地理解和掌握。书中各章均含有大量例子及完整的代码段和分析,帮助读者强化对关键概念的理解,以及对主题的掌握。各章还配有丰富的自测习题以及答案,帮助读者进一步提升对C++知识的理解以及实际动手编程能力。

完美C++(第5版)章节目录

第1章 C++ 基础

1.1 C++简介

C++语言的起源

C++与面向对象编程

C++的特点

C++术语

C++程序示例

1.2 变量、表达式及赋值语句

标识符

变量

赋值语句

string类简介

陷阱:未初始化变量

提示:采用有意义的变量名

更多赋值语句

赋值兼容性

字面值

转义序列

命名常量

算数运算符和表达式

整数和浮点数除法

陷阱:全整数除法

类型转换

自增和自减运算符

陷阱:求值顺序

1.3 控制台输入/输出

使用cout输出

换行符

提示:以\n或endl结束程序

格式化浮点数

用cerr输出

用cin输入

提示:输入/输出中的换行

1.4 编程风格

注释

1.5 库与命名空间

库与include命令

命名空间

陷阱:库名的问题

第2章 流程控制

2.1 布尔表达式

创建布尔表达式

陷阱:不等式连写

布尔表达式求值

优先级规则

陷阱:整数值用作布尔值

2.2 分支机制

if-else语句

复合语句

陷阱:用=代替==

省略else

嵌套语句

多分支if-else语句

switch语句

陷阱:遗漏switch语句中的break

提示:在菜单中使用switch语句

枚举类型

条件运算符

2.3 循环

while和do-while循环

再谈自增和自减运算符

逗号运算符

for语句

提示:重复N次的循环

陷阱:for语句中额外的分号

陷阱:无限循环

break与continue语句

嵌套循环

2.4 文件输入简介

通过ifstream读取文本文件内容

第3章 函数基础

3.1 预定义函数

带有返回值的预定义函数

预定义的void函数

随机数生成器

3.2 自定义函数

定义带有返回值的函数

函数声明的另一种形式

陷阱:参数顺序的错误

调用函数的函数

示例:一个四舍五入的函数

返回布尔值的函数

定义void函数

void函数中的return语句

前提条件和运行结果

main函数

递归函数

3.3 作用域规则

局部变量

过程抽象

全局常量和全局变量

语句块

嵌套作用域

提示:在分支和循环语句中使用函数调用

for循环体中的变量声明

第4章 函数与重载

4.1 参数

传值参数

初识引用参数

引用传递调用机制详解

常量引用参数

示例:函数swapValues

提示:一种操作,而不是代码

混合参数列表

提示:使用何种参数

陷阱:无意的局部变量

提示:选择形参的名字

示例:买比萨

4.2 重载与默认实参

重载简介

陷阱:自动类型转换与重载

重载解析的规则

示例:改写"买比萨程序"

默认参数

4.3 函数的测试和调试

assert宏

占位程序和驱动程序

第5章 数组

5.1 数组简介

数组的声明和引用

提示:对数组使用for循环

陷阱:数组的索引始终是从0开始的

提示:使用已定义的常量作为数组的大小

内存中的数组

陷阱:数组越界

数组的初始化

5.2 函数中的数组

索引变量作为函数实参

整个数组作为函数实参

const修饰符

陷阱:const参数的不一致使用

返回数组的函数

示例:生产图表

5.3 用数组编程

部分填充的数组

提示:不要吝啬形参的使用

示例:查询数组

示例:给数组排序

5.4 多维数组

多维数组基础

多维数组参数

示例:使用二维数组的记分程序

第6章 结构体和类

6.1 结构体

结构体类型

陷阱:漏掉结构体定义末尾的分号

结构体作为函数参数

提示:使用多重结构体

结构体的初始化

6.2 类

定义类和成员函数

封装

公有成员和私有成员

取值和赋值函数

提示:接口和实现的分离

提示:封装的测试

结构体与类

提示:对象思考

第7章 构造函数及其他工具

7.1 构造函数

构造函数的定义

陷阱:无参构造函数

构造函数的显式调用

提示:总是为类定义一个默认构造函数

示例:BankAccount类

类类型成员变量

7.2 其他工具

const修饰符

陷阱:const的不一致用法

内联函数

静态成员

嵌套类和局部类定义

7.3 向量――标准模板库预览

向量基础

陷阱:方括号的索引超过向量的大小

提示:向量的赋值

效率问题

第8章 运算符重载、友元和引用

8.1 基本运算符的重载

重载基础

提示:构造函数可以返回一个对象

返回常量类型

一元运算符的重载

作为成员函数的运算符重载

提示:类可以访问其所有对象

重载函数调用符( )

陷阱:重载 &&、||及逗号运算符

8.2 友元函数与自动类型转换

构造函数的自动类型转换

陷阱:成员运算符和自动类型转换

友元函数

友元类

陷阱:不支持友元的编译器

8.3 引用和其他运算符重载

引用

提示:返回类的成员变量

重载">>"和"<<"

提示:应使用什么样的返回值类型

赋值运算符

重载自增和自减运算符

重载数组运算符[ ]

基于左值和右值的重载

第9章 字符串

9.1 字符串类型数组

C字符串值和C字符串变量

陷阱:对C字符串使用 "=" 和 "=="

<cstring>中的其他函数

示例: 命令行参数

C字符串的输入/输出

9.2 字符操作工具

字符的输入/输出

成员函数get和put

示例:使用换行函数检查输入

陷阱:输入时没有处理'\n'

成员函数putback、peek和ignore

字符操作函数

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

9.3 标准string类

标准string类简介

string类的输入和输出

提示:getline函数的其他版本

陷阱:对cin同时使用>>和getline

使用string类处理字符串

示例: 回文检测

string类对象和C字符串的转换

第10章 指针和动态数组

10.1 指针

指针变量

内存管理基础

陷阱:悬空指针

动态变量和自动变量

提示:定义指针类型

陷阱:指针用作传值参数

指针的应用

10.2 动态数组

数组变量和指针变量

创建并使用动态数组

示例:一个返回数组的函数

指针运算

多维动态数组

10.3 类、指针和动态数组

运算符->

this指针

重载赋值运算符

示例:部分填充数组的类

析构函数

拷贝构造函数

第11章 分散编译和命名空间

11.1 分散编译

封装回顾

头文件和实现文件

示例:DigitalTime类

提示:可重用的组件

使用#ifndef

提示:定义其他库

11.2 命名空间

命名空间和using指令

创建一个命名空间

using声明

限定名称

提示:为命名空间取名

示例:一个定义在命名空间中的类

无名称的命名空间

陷阱:混淆全局命名空间和无名称命名空间

提示:用无名称命名空间代替static修饰符

提示:隐藏帮助函数

嵌套命名空间

提示:应该如何指明使用的命名空间

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

12.1 I/O流

文件I/O

陷阱:流变量的使用限制

向文件追加输出内容

提示: 打开文件的另一种方法

提示:检查一个文件是否已被成功打开

字符I/O

文件结束检查

12.2 I/O流工具

使用文件名输入

使用流函数进行格式化输出

控制符

保存设置的标记

更多的输出流成员函数

示例:整理文件格式

示例:编辑文本文件

12.3 流的继承层次:继承概述

流之间的继承

示例:另一版本的newLine函数

使用类stringstream解析字符串

12.4 随机文件存取

第13章 递归

13.1 递归void函数

示例:竖直排列的数字

跟踪一个递归调用

深入理解递归

陷阱:无限递归

递归调用中的栈

陷阱:栈溢出

递归与迭代的比较

13.2 有返回值的递归函数

有返回值的递归函数的一般形式

示例:另一个幂函数

交叉递归

13.3 按递归方式思考问题

递归设计技巧

二分查找

编码

检查递归是否正确

效率

第14章 继承

14.1 继承基础

派生类

派生类的构造函数

陷阱:使用基类的私有成员变量

陷阱:私有成员函数是无法被有效继承的

protected限定符

成员函数的重定义

重定义与重载

访问被重定义过的基类函数

不可被继承的函数

14.2 利用继承编程

派生类中的赋值运算符和拷贝构造函数

派生类的析构函数

示例:可备份的部分填充的数组

陷阱:赋值运算符两边是同一个对象

示例:PFArrayDBak的另一种实现

提示:一个类可以访问本类所有对象的私有成员

提示:"是一个"和"有一个"

保护继承和私有继承

多继承

第15章 多态与虚函数

15.1 虚函数基础

延迟绑定

C++中的虚函数

提示:virtual属性会被继承

提示:什么时候应该使用虚函数

陷阱:没有对虚成员函数进行定义

抽象类与纯虚函数

示例:抽象类

15.2 指针和虚函数

虚函数与扩展类型兼容性

陷阱:切片问题

提示:使析构函数成为虚函数

向下类型转换和向上类型转换

C++如何实现虚函数

第16章 模板

16.1 函数模板

函数模板语法

陷阱:编译器的复杂性

提示:如何定义模板

示例:一个通用的排序函数

陷阱:使用模板时误用了不正确的数据类型

16.2 类模板

类模板语法

示例:一个数组模板类

模板中的vector和 basic_string

16.3 模板和继承

示例: 带备份的部分填充数组模板类

第17章 链式数据结构

17.1 节点和链表

节点

链表

在链表头插入节点

陷阱:丢失节点

插入和删除链表内的节点

陷阱:对动态数据结构使用赋值运算符

搜索链表

搜索函数伪代码

双向链表

为双向链表增加一个节点

从双向链表中删除一个节点

示例: 使用双向链表实现的通用排序模板函数

17.2 链表的应用

示例:栈模板类

示例:队列模板类

提示:命名空间的注解

友元类以及类似的其他选择

示例:包含节点链的哈希表

字符串哈希函数

哈希表的效率

示例:集合(set)模板类

集合的基本操作

链表创建的集合的效率

17.3 迭代器

指针作为迭代器

迭代器类

示例:迭代器类

17.4 树

树的属性

示例:树模板类

第18章 异常处理

18.1 异常处理基础

异常处理的简单样例

定义自己的异常类

多个抛出和捕获

陷阱:首先捕获比较明确的异常

提示:异常类可以很简单

在函数中抛出异常

异常说明

陷阱:派生类中的异常说明

18.2 异常处理的编程技术

抛出异常的时机

陷阱:未被捕获的异常

陷阱:嵌套try-catch块

陷阱:过度使用异常

异常类层次结构

可用内存测试

再次抛出异常

第19章 标准模板库

19.1 迭代器

迭代器基础

陷阱:编译器问题

迭代器的种类

常量迭代器和可变迭代器

反向迭代器

其他种类的迭代器

19.2 容器

连续容器

陷阱:迭代器和删除元素

提示:容器中的类型定义

容器适配器栈和队列

陷阱:底层容器

关联式容器set和map

效率

19.3 泛型算法

运行时间和大-O表示法

容器访问运行时间

不改变序列的算法

改变序列的算法

集合算法

排序算法

使用说明

1、下载并解压,得出pdf文件

2、如果打不开本文件,请务必下载pdf阅读器

3、安装后,在打开解压得出的pdf文件

4、双击进行阅读

展开全部内容
语言简体中文

同类热门

得间免费小说电脑版得间免费小说电脑版 网易新闻电脑版网易新闻电脑版 潇湘书院电脑版潇湘书院电脑版 开源阅读电脑版开源阅读电脑版 cnki全球学术快报电脑版cnki全球学术快报电脑版 未公开的Oracle数据库秘密未公开的Oracle数据库秘密 PHP语言精粹电子书PHP语言精粹电子书 linux常用命令大全linux常用命令大全

类似软件

热门标签

html5网页制作软件 免费室内设计软件 vip视频解析工具大全 电脑设计logo画图软件 hosts文件管理软件大全 电脑蓝牙驱动软件 文献管理软件大全 免费商用字体 电脑数据恢复软件大全 电脑硬件检测软件大全 迅捷视频软件大全 电脑流量监控软件大全

网友评论0人参与,0条评论

评论需审核后才能显示

最新排行

手游排行软件排行热门应用