出版社:清华大学出版社
年代:2013
定价:89.0
本书结合实例,全面、系统地介绍了C++开发的方方面面。共分为5大部分,总计24章。第1部分是面向过程的C++知识;第2部分包括类的概念、类的特性继承、封装、多态的使用以及运算符的重载;第3部分为C++中流的操作、模板和标准模板库,第4部分为C++中的一些高级内容;第5部分为一个火车票管理系统的开发过程。
第1篇 C++基础知识
第1章 走进C++(教学视频:14分钟)
1.1 C++的经历
1.1.1 编程语言的发展历史
1.1.2 C++的发展经历
1.2 C++的特点
1.3 C++的编译工具CodeBlocks
1.3.1 “解释”和“编译”
1.3.2 工具的选择
1.3.3 Codeblocks的基本使用
1.3.4 关于英语学习的建议
1.4 C++程序的开发过程
1.4.1 最简单的C++程序——HelloWorld程序
1.4.2 程序结构的分析
1.4.3 HelloWorld的编译与运行
1.4.4 HelloWorld的运行结果
1.5 如何学好C++
1.6 小结
1.7 练习题
第2章 变量和基本数据类型(教学视频:30分钟)
2.1 变量和常量
2.1.1 如何使用变量
2.1.2 变量的声明
2.1.3 变量的赋值
2.1.4 如何使用常量
2.1.5 使用宏定义表示常量
2.2 局部变量和全局变量
2.3 无须费心的基本数据类型
2.3.1 整型int
2.3.2 浮点型float
2.3.3 字符型char
2.3.4 布尔型Boolean
2.4 特殊的数据类型——空类型
2.5 数据类型的绿叶——类型修饰符
2.5.1 分辨正负号的有符号类型——signed修饰符
2.5.2 全是正数的无符号类型——unsigned修饰符
2.5.3 比正常数据短点的short修饰符
2.5.4 比正常数据长点的long修饰符
2.5.5 数据类型的转换
2.6 小结
2.7 练习题
第3章 运算符和表达式(教学视频:21分钟)
3.1 运算符和表达式
3.2 赋值运算符和赋值表达式
3.2.1 赋值运算的基本使用
3.2.2 赋值运算过程中的类型转换
3.3 算术运算符和表达式
3.4 比较大小的关系运算符和关系表达式
3.5 “真真假假”的逻辑运算符和逻辑表达式
3.6 特殊的逗号运算符和逗号表达式
3.7 “特色的”加1和减1运算
3.8 唯一需要三个表达式的条件运算符和表达式
3.9 取字节数操作sizeof和括号运算符
3.9.1 取字节数操作sizeof
3.9.2 括号运算符
3.10 运算符的结合顺序和优先级
3.11 小结
3.12 练习题
第4章 简单的输入输出函数(教学视频:20分钟)
4.1 转义序列和格式化控制符
4.2 格式化输出函数printf()
4.2.1 printf()的简单应用
4.2.2 printf()函数中表达式的计算顺序
4.2.3 printf()函数的复杂应用
4.3 单一字符输出函数putchar()
4.4 格式化输入函数scanf()
4.4.1 scanf()函数的基本使用
4.4.2 scanf()函数的使用注意事项
4.5 单一字符输入函数getchar()
4.6 小结
4.7 练习题
第5章 程序运行流程控制结构(教学视频:26分钟)
5.1 程序流程控制结构概述
5.1.1 顺序结构简介
5.1.2 循环结构简介
5.1.3 分支结构简介
5.2 循环结构
5.2.1 for循环结构
5.2.2 先判断条件再去执行的while结构
5.2.3 先执行再去判断条件的dowhile结构
5.2.4 循环变量的确定
5.2.5 示例程序——显示乘法口诀
5.3 分支结构
5.3.1 只能多选一的ifelse结构
5.3.2 多条腿走路的switch结构
5.3.3 分支判断条件的确定
5.3.4 示例程序——奖金分配
5.4 转移语句
5.4.1 break语句及其用法
5.4.2 continue语句及其用法
5.4.3 goto语句及其用法
5.5 小结
5.6 练习题
第6章 需要自己定义的自定义数据类型(教学视频:28分钟)
6.1 相同数据类型数据的组合——数组
6.1.1 数组的定义
6.1.2 数组的初始化
6.1.3 数组的使用
6.1.4 数组使用示例——费波纳茨数列
6.2 二维数组的应用
6.2.1 二维数组的定义和初始化
6.2.2 二维数组的使用
6.2.3 多维数组的使用
6.2.4 变长数组的使用
6.2.5 数组的使用示例——杨辉三角的编写
6.3 数据类型大杂烩——结构体
6.3.1 结构体类型的定义
6.3.2 结构体类型变量的使用
6.3.3 结构体数组
6.3.4 结构体类型变量的嵌套使用
6.4 特殊的结构体类型——联合体
6.4.1 联合体类型的定义
6.4.2 联合体类型变量的使用
6.4.3 联合体类型和结构体类型的区别
6.5 一一列举——枚举类型
6.6 再论数据类型转换
6.6.1 显式转换
6.6.2 隐式转换
6.7 小结
6.8 练习题
第7章 指针和数组(教学视频:19分钟)
7.1 地址和指针
7.1.1 地址和指针的关系
7.1.2 如何使用指针
7.1.3 指针的算术运算
7.1.4 变量的引用
7.2 指针和数组
7.2.1 指针和数组名的关系
7.2.2 指针和二维数组的关系
7.2.3 指针和数组的区别
7.3 小结
7.4 练习题
第8章 指针和字符串(教学视频:15分钟)
8.1 字符串概述
8.2 字符数组和字符指针
8.3 指针和字符串
8.4 字符串处理函数
8.4.1 字符串输入函数gets()
8.4.2 字符串输出函数puts()
8.4.3 字符串复制函数strcpy()和strncpy()
8.4.4 字符串连接函数strcat()和strncat()
8.4.5 取字符串长度函数strlen()
8.4.6 字符串比较函数strcmp()
8.4.7 字符大小写转换函数toupper()和tolower()
8.5 字符串操作示例——自助提款机的密码验证的模拟操作
8.5.1 密码验证模拟功能概述
8.5.2 密码验证模拟设计说明
8.5.3 参考代码
8.5.4 程序运行结果分析
8.6 小结
8.7 练习题
第9章 函数(教学视频:35分钟)
9.1 模块化程序设计概述——搭积木式程序设计方法
9.1.1 模块化设计的基本原理
9.1.2 模块化设计的原则
9.1.3 模块化设计的方法
9.2 函数的使用
9.2.1 函数的基本结构
9.2.2 函数的分类
9.2.3 自定义函数的使用
9.2.4 形式参数和实际参数——真人和影子的区别
9.2.5 函数参数之间的数值传递
9.2.6 函数调用的执行过程
9.3 函数的复杂应用
9.3.1 数组作为函数参数
9.3.2 指针作为函数参数
9.3.3 可变参数宏
9.4 函数指针的使用
9.4.1 函数指针的定义
9.4.2 函数指针数组的使用
9.5 不断调用本身的递归调用
9.6 内联函数的使用
9.7 示例程序——数组逆序输出
9.7.1 程序功能概述
9.7.2 参考代码
9.7.3 运行结果分析
9.8 小结
9.9 练习题
第2篇 面向对象编程基础
第10章 面向对象的基本知识(教学视频:11分钟)
10.1 什么是类?什么是对象?
10.1.1 类和对象的概念
10.1.2 万物皆对象
10.1.3 面向对象方法学
10.2 面向对象的特点
10.2.1 封装——“打包”
10.2.2 继承——“子承父业”
10.2.3 多态——“一母生九子”
10.3 从面向过程到面向对象编程
10.3.1 面向过程简介
10.3.2 从过程到对象的演变
10.3.3 面向对象注意的问题
10.4 面向对象的一些流程
10.4.1 分析(OOA)简介
10.4.2 设计(OOD)简介
10.4.3 编程(OOP)简介
10.5 面向对象设计模式
10.6 小结
10.7 练习题
第11章 类和对象(教学视频:20分钟)
11.1 类
11.1.1 如何定义类
11.1.2 类的属性——数据成员
11.1.3 类的方法——方法函数
11.2 对象
11.2.1 对象的定义
11.2.2 对象数组和对象参数
11.2.3 指向自身的this指针
11.3 类成员的访问控制
11.3.1 私有财产——私有成员
11.3.2 亲人可以分享——保护成员
11.3.3 我是博爱的——公有成员
11.3.4 类成员的安全性
11.3.5 static关键字
11.4 构造函数和析构函数
11.4.1 构造函数的定义及作用
11.4.2 默认构造函数
11.4.3 构造函数重载
11.4.4 拷贝构造函数
11.4.5 析构函数的定义及作用
11.5 “特殊的漏洞”——友元函数
11.5.1 友元函数的定义
11.5.2 友元类
11.6 小结
11.7 练习题
第12章 继承(教学视频:22分钟)
12.1 继承的基本知识
12.1.1 什么是继承
12.1.2 继承的方式
12.1.3 如何继承
12.2 继承权限——我爸的东西我做主
12.2.1 私有继承——爸爸自己的你无权拥有
12.2.2 保护继承——这是你爷爷留给你的
12.2.3 公有继承——好东西大家分享
12.3 派生类对象与基类对象
12.3.1 派生类与基类的转换使用
12.3.2 类的内存分配
12.4 继承中的构造函数和析构函数
12.4.1 派生类的构造函数
12.4.2 带参数的构造函数
12.4.3 派生类的析构函数
12.5 “多父多母”——多继承
12.5.1 多继承的概念
12.5.2 多继承的应用
12.5.3 多继承存在的问题
12.6 “特殊的父亲”——虚基类
12.6.1 虚基类是什么
12.6.2 虚基类的使用
12.7 小结
12.8 练习题
第13章 多态(教学视频:13分钟)
13.1 多态的基本知识介绍——“字同意不同”
13.2 静态多态
13.2.1 普通成员函数重载
13.2.2 构造函数重载
13.3 动态多态和虚函数
13.3.1 使用动态多态的原因
13.3.2 如何实现动态多态
13.3.3 虚函数的定义方式
13.3.4 虚函数调用规则
13.3.5 虚析构函数
13.4 特殊的虚函数——纯虚函数
13.4.1 什么是纯虚函数
13.4.2 纯虚函数与抽象类
13.4.3 虚函数和纯虚函数的区别
13.5 小结
13.6 练习题
第14章 运算符重载——定义自己的运算符(教学视频:18分钟)
14.1 重载运算符基础
14.1.1 重载运算符概述
14.1.2 重载运算符注意事项
14.1.3 重载运算符的实现
14.2 重载运算符实例
14.2.1 赋值运算符的重载
14.2.2 算术运算符的重载
14.2.3 递增运算符和递减运算符重载
14.2.4 复合运算符重载
14.2.5 关系运算符的重载
14.2.6 下标运算符重载
14.2.7 逗号运算符的重载
14.2.8 输入和输出运算符重载
14.3 小结
14.4 练习题
第3篇 C++中的标准库和模板库
第15章 流操作(教学视频:23分钟)
15.1 C++中的流
15.1.1 理解流
15.1.2 流的优点
15.2 C++流类库
15.2.1 标准流类库
15.2.2 流的基本操作
15.2.3 输入流
15.2.4 输出流
15.2.5 输入输出流格式控制
15.2.6 预定义对象cerr、clog的使用
15.3 文件流
15.3.1 文件流的基本概述
15.3.2 打开文件流
15.3.3 文件流读写操作
15.3.4 关闭文件流
15.3.5 设置读写位置
15.4 字符串流
15.5 小结
15.6 练习题
第16章 流的高级操作(教学视频:25分钟)
16.1 未格式化流操作
16.1.1 未格式化输入输出操作
16.1.2 未格式化流的随机操作
16.2 流和缓冲区
16.2.1 缓冲区概述
16.2.2 缓冲区刷新
16.2.3 缓冲区溢出的危害
16.3 流错误处理
16.3.1 流错误状态捕捉
16.3.2 流错误状态恢复
16.4 大型程序的编写
16.4.1 全局共享变量的定义
16.4.2 头文件和源文件的使用
16.4.3 自动编译的使用
16.4.4 断点调试技术的使用
16.5 小结
16.6 练习题
第17章 模板(教学视频:18分钟)
17.1 模板的引入
17.1.1 代码复用技术概述
17.1.2 模板的引入
17.2 类模板
17.2.1 定义类模板
17.2.2 类模板的实例化
17.2.3 模板与继承
17.2.4 模板与友元
17.3 函数模板
17.3.1 函数模板的定义
17.3.2 函数模板的使用
17.3.3 函数模板的重载
17.4 小结
17.5 练习题
第18章 标准模板库(教学视频:23分钟)
18.1 STL简介
18.1.1 STL的发展
18.1.2 STL结构
18.2 字符串类容器——string
18.2.1 定义string类的对象
18.2.2 string类对字符串的操作
18.2.3 string类对字符的操作
18.3 vector容器
18.3.1 vector容器的创建
18.3.2 vector容器的基本操作
18.3.3 vector容器的数据访问
18.4 list容器
18.4.1 list容器的创建
18.4.2 list容器的基本操作
18.4.3 list容器中数据操作
18.5 map容器
18.5.1 map容器的定义
18.5.2 map容器的使用
18.5.3 map容器的数据操作
18.5.4 map容器中重载运算符的使用
18.6 迭代器
18.6.1 什么是迭代器
18.6.2 迭代器与容器
18.7 STL的其他内容
18.7.1 STL中的算法
18.7.2 STL中的容器适配器
18.8 小结
18.9 练习题
第4篇 高级主题
第19章 异常处理(教学视频:20分钟)
19.1 异常的产生以及简单处理
19.1.1 异常的产生
19.1.2 使用函数返回值
19.1.3 使用断言assert
19.1.4 使用函数abort()
19.2 C++异常处理机制
19.2.1 trythrow结构
19.2.2 catch结构
19.2.3 异常参数传递
19.2.4 异常的重新抛出
19.3 标准异常处理类
19.3.1 exception类
19.3.2 exception类的派生类
19.4 小结
19.5 练习题
第20章 命名空间(教学视频:14分钟)
20.1 命名空间的定义
20.1.1 命名空间的引出
20.1.2 命名空间的别名
20.1.3 命名空间成员的调用
20.1.4 命名空间的嵌套调用
20.2 using指令的使用
20.2.1 创建别名
20.2.2 调用命名空间成员
20.3 标准命名空间std
20.3.1 标准命名空间成员的调用
20.3.2 iostream和iostream.h的区别
20.4 小结
20.5 练习题
第21章 C++编程的其他内容(教学视频:17分钟)
21.1 位运算
21.1.1 位运算基础
21.1.2 按位与运算
21.1.3 按位或运算
21.1.4 取反运算
21.1.5 异或运算
21.1.6 左移运算
21.1.7 右移运算
21.2 内存对齐
21.2.1 大端模式和小端模式概述
21.2.2 结构体内存字节对齐
21.3 随机数
21.3.1 随机数的产生
21.3.2 特定随机数的产生
21.4 代码编写规范
21.4.1 注释的使用
21.4.2 代码规范的使用
21.5 小结
21.6 练习题
第22章 预处理器(教学视频:21分钟)
22.1 预处理简介
22.1.1 预处理中的##运算符
22.1.2 预处理指令介绍
22.2 文件包含指令#include
22.2.1 头文件的基础介绍
22.2.2 文件包含指令#include
22.2.3 “”和的区别
22.3 条件编译指令介绍
22.3.1 带#的if指令和endif指令的简单结构
22.3.2 带#的if指令和endif指令的复杂结构
22.3.3 #ifdef和#ifndef指令
22.4 再论宏定义
22.4.1 宏定义的基础
22.4.2 带参数的宏定义
22.4.3 可变参数宏
22.4.4 宏定义的结束指令#undef
22.4.5 typedef的使用
22.5 其他指令和参数的使用
22.5.1 #pragma指令的使用
22.5.2 #error指令和#line指令的使用
22.5.3 预定义宏的使用
22.6 小结
22.7 练习题
第23章 C++程序的内存管理(教学视频:19分钟)
23.1 指针的高级应用——动态分配内存
23.1.1 程序运行时的内存分配情况
23.1.2 动态分配内存的实现
23.1.3 动态分配内存的使用
23.1.4 内存分配注意事项
23.2 动态分配内存实例——链表的使用
23.2.1 链表的基本知识
23.2.2 链表的创建
23.2.3 链表中节点的删除
23.2.4 节点的插入
23.3 变量的存储
23.3.1 自动存储auto类型
23.3.2 寄存器存储register类型
23.3.3 静态存储static类型
23.3.4 外部链接修饰符extern
23.3.5 常量限制符号const
23.4 小结
23.5 练习题
第5篇 开发实战
第24章 C++程序开发与测试的艺术(教学视频:17分钟)
24.1 软件测试概述
24.1.1 衡量软件质量的标准
24.1.2 程序测试的基本内容
24.1.3 测试的基本原则
24.2 软件开发的过程模型
24.2.1 瀑布模型
24.2.2 V模型
24.3 测试用例设计方法介绍
24.3.1 白盒测试
24.3.2 白盒测试用例设计方法分析
24.3.3 黑盒测试
24.3.4 黑盒测试用例设计方法分析
24.4 软件测试分类
24.4.1 功能测试
24.4.2 性能测试
24.5 小结
24.6 练习题
第25章 模拟火车售票管理系统的实现(教学视频:12分钟)
25.1 系统设计概述
25.1.1 系统概述
25.1.2 功能模块划分及相互关系
25.1.3 面向过程编程的数据分析
25.1.4 面向对象编程的数据分析
25.2 常用辅助工具介绍
25.2.1 系统流程图及数据流图
25.2.2 UML视图
25.3 面向过程的详细设计
25.3.1 程序流程
25.3.2 系统初始化模块
25.3.3 查询模块解析
25.3.4 售票和预订车票模块解析
25.3.5 信息维护模块解析
25.3.6 主函数的实现
25.4 面向对象的详细设计
25.4.1 程序流程
25.4.2 查询类的实现
25.4.3 车票相关操作的实现
25.4.4 系统管理类的实现
25.4.5 主函数的实现
25.5 运行结果分析
25.6 小结
C++是目前使用范围最广的程序设计语言之一,既具有面向过程编程模式的简洁和快捷,又具有面向对象编程模式的方便和实用。本书从这两种编程模式出发,使用跨平台的编译工具CodeBlocks,全面、系统、详细地介绍了C++开发技术和常见的开发技巧,并通过大量实例提升读者的实战技能,通过实战案例展现C++项目开发的流程和技巧。另外,为了让读者更加直观、高效地学习,作者专门录制了配套多媒体教学视频。这些视频与本书涉及的源程序及赠送的其他学习资料一起收录于配书光盘中。本书共25章,分为5篇。第1篇为C++基础知识,介绍了C++的编程环境、变量、数据类型、运算符、表达式、流程控制、函数、指针、数组、自定义类型等;第2篇为面向对象编程基础,介绍了C++面向对象开发的特征:类、对象、继承、封装、多态和重载等;第3篇介绍C++中的标准库和模板库,介绍了流操作、模板和标准模板库(STL);第4篇为高级主题,介绍了异常处理、命名空间、预处理、内存管理等高级内容;第5篇为开发实战,介绍了如何编写和测试大型程序等项目开发的基础内容,并使用面向对象和面向过程两种方式模拟了火车售票系统的开发过程。全书内容全面,实例丰富,特别适合广大自学C++编程的人员阅读,也可作为计算机、软件工程等专业的教材使用。对于C++程序员,本书是一本不可多得的案头必备参考手册。
适读人群 :想全面学习C++的读者、C++编程爱好者、C++程序员
全面、深入介绍了标准C++在Windows和Linux系统下进行软件开发的知识,通过大量实例提升实战技能,通过实战案例展现C++项目开发的流程和技巧
高效:提供了8.4小时高清配套教学视频及11.3小时进阶视频,高效而直观
全面:涵盖C++编程基础、面向对象、标准库与模板库、高级技术等内容
新颖:使用跨平台编译工具CodeBlocks,适合Windows和Linux系统下的开发
详细:结合图示,从概念、语法、示例、技巧和应用等多角度分析每个知识点
实用:提供了150个实例、1个综合案例、93个实践练习题及答案
深入:深入剖析异常处理、命名空间、位运算、预处理及内存管理等高级技术
李琳娜, 编著
刘锐宁, 李伟明, 梁水, 编著
(美) 彭德 (Pender,R.) , 编著
(美) 威廉姆斯 (Williams,A.) , 著
付强, 等编著
贾蓓, 等编著
(美) 西蒙 (Simon,D.) , 编著
牛力, 傅韵, 编著
(黑) 留莫维奇, 著