计算机
类型
可以朗读
语音朗读
617千字
字数
2016-07-01
发行日期
展开全部
主编推荐语
通俗易懂讲解C++基础知识,实例丰富,注释详细。
内容简介
从初学者角度出发,以通俗易懂的语言,丰富多彩的实例,详细讲解了C++语言的基础知识。全书共分18章,包括绪论,数据类型,表达式与语句,条件判断语句,循环语句,函数,数组、指针和引用,构造数据类型,面向对象编程,类和对象,继承与派生,模板。书中所有知识都结合具体实例进行介绍,涉及的程序代码给出了详细的注释,可以使读者轻松领会C++语言的强大,快速提高开发技能。
目录
- 版权信息
- 内容提要
- 前言
- 选择一本合适的书
- 本书的特色
- 本书的内容
- 各章的内容版式
- 再看逻辑运算符
- 赠送资料
- 售后服务
- 本书的读者对象
- 致谢
- 本书实例目录
- 第1章 说真的,我们还要学习C++吗
- 1.1 C++概述
- 1.2 开发工具——Visual C++
- 1.2.1 先看Visual C++的基本特点
- 1.2.2 安装Visual C++
- 1.2.3 Visual C++集成开发环境介绍
- 1.3 使用Visual Studio 2010
- 安装Visual Studio 2010
- 1.4 第一个C++程序
- 1.5 技术解惑
- 1.5.1 初学者经常不知道自己该学什么
- 1.5.2 初学者需要知道的正确观念
- 第2章 C++的重要特质分析
- 2.1 什么是面向对象(object-oriented)
- 2.1.1 什么是OOP
- 2.1.2 面向对象编程
- 2.2 分析C++的程序结构
- 2.2.1 从一段代码看C++程序结构
- 2.2.2 看C++的文件组织
- 2.3 必须遵循的编码规范
- 2.3.1 养成良好的风格
- 2.3.2 必须使用的注释
- 2.3.3 代码也需要化妆
- 2.4 输入输出基础
- 2.4.1 标准输入与输出对象
- 2.4.2 一个使用IO库的程序
- 2.5 算法是程序的灵魂
- 2.5.1 算法的概念
- 2.5.2 流程图表示算法
- 2.5.3 计算机语言表示算法
- 2.6 技术解惑
- 2.6.1 C++是面向对象,C是面向过程,那么这个对象和过程是什么意思呢
- 2.6.2 面向对象和面向过程的区别
- 2.6.3 学好C++的建议
- 第3章 你不一定了解的基础语法
- 3.1 先看标识符
- 3.1.1 C++中的保留字
- 3.1.2 需要遵循的命名规则
- 3.2 最基本的数据类型
- 3.2.1 数字运算型
- 3.2.2 逻辑运算型
- 3.2.3 字符型和字符串
- 3.3 标准类型库基础
- 3.3.1 命名空间using声明
- 3.3.2 标准库的string类
- 3.3.3 vector类型简介
- 3.3.4 迭代器简介
- 3.3.5 bitset类型初步
- 3.4 技术解惑
- 3.4.1 C++的标识符长度应当符合“min-length && max-information”原则
- 3.4.2 字符和字符串有什么区别
- 3.4.3 C++中string类字符串和C中char*/char[]型字符串的差别
- 3.4.4 C++字符串和C字符串的转换
- 3.4.5 C++字符串和字符串结束标志
- 第4章 你不一定了解的变量和常量
- 4.1 先来看变量
- 4.1.1 定义变量
- 4.1.2 声明变量
- 4.2 变量的作用域
- 4.2.1 作用域和生存期
- 4.2.2 作用域限定符
- 4.2.3 存储类型
- 4.2.4 C++变量初始化
- 4.2.5 C++变量命名规范
- 4.3 再来看常量
- 4.3.1 什么是常量
- 4.3.2 常量的分类
- 4.3.3 常量的应用
- 4.4 技术解惑
- 4.4.1 C++常量的命名需要遵循一定的规范吗
- 4.4.2 在C++程序中,用const定义常量还是用#define
- 4.4.3 const是个很重要的关键字,在使用时应该注意些什么呢
- 4.4.4 关于全局变量的初始化,C语言和C++有区别吗
- 4.4.5 C/C++变量在内存中的分布
- 4.4.6 静态变量的初始化顺序
- 第5章 你不一定了解的运算符
- 5.1 先看赋值运算符
- 5.2 再看算术运算符
- 5.3 再看比较运算符
- 5.4 再看逻辑运算符
- 5.5 单独看++/−−运算符
- 5.6 再看位运算符
- 5.7 再看求字节数运算符
- 5.8 再看条件运算符
- 5.9 再看逗号运算符
- 5.10 技术解惑
- 5.10.1 避免运算结果溢出的一个方案
- 5.10.2 运算符重载的权衡
- 5.10.3 运算符的优先级和结合性
- 5.10.4 运算符重载是对已有运算符赋予多重含义
- 第6章 说说表达式
- 6.1 何谓表达式
- 6.1.1 看天下几分——表达式的分类
- 6.1.2 看表达式的书写方式
- 6.2 说说类型转换
- 6.2.1 先看隐式转换
- 6.2.2 再看显式转换
- 6.3 技术解惑
- 6.3.1 C/C++ 表达式的限制
- 6.3.2 表达式的真正功能
- 第7章 流程控制语句
- 7.1 最简单的语句和语句块
- 7.1.1 最简单的语句
- 7.1.2 说说语句块
- 7.1.3 最后是语句的总结
- 7.2 最常见的顺序结构
- 7.3 选择结构
- 7.3.1 先看单分支结构语句
- 7.3.2 再看双分支结构语句
- 7.3.3 还要使用多分支结构语句
- 7.4 循环结构详解
- 7.4.1 for语句循环
- 7.4.2 while语句
- 7.4.3 说说do-while语句
- 7.5 跳转语句
- 7.5.1 何谓break语句
- 7.5.2 何谓continue语句
- 7.5.3 何谓goto语句
- 7.6 技术解惑
- 7.6.1 循环中断的问题
- 7.6.2 分析循环语句的效率
- 7.6.3 几种循环语句的比较
- 7.6.4 C++中,for循环该怎么读
- 7.6.5 一个C++循环结构嵌套的问题
- 7.6.6 break语句和continue语句的区别
- 第8章 学习C++的最大障碍——指针
- 8.1 说说指针的基本概念
- 8.2 定义指针的几种方式
- 8.2.1 先定义指针
- 8.2.2 再识别指针
- 8.3 指针的分类
- 8.4 指针初始化
- 8.4.1 第一步:指针地址初始化
- 8.4.2 第二步:变量地址初始化
- 8.4.3 第三步:new分配内存单元
- 8.4.4 第四步:malloc函数分配内存单元
- 8.5 指针运算
- 8.5.1 算数运算
- 8.5.2 关系运算
- 8.6 指针的指针
- 8.7 使用指针
- 8.7.1 指针赋值
- 8.7.2 *操作符
- 8.8 分析指针和引用的关系
- 8.9 特殊指针
- 8.9.1 先看void型指针
- 8.9.2 再看空指针
- 8.10 技术解惑
- 8.10.1 指针的命名规范
- 8.10.2 C++中指针和引用的区别
- 8.10.3 变量在语言中的实质
- 8.10.4 C++开发如何避免和解决野指针
- 8.10.5 常量指针常量和常量引用常量
- 8.10.6 指针常量和引用常量的对比
- 8.10.7 常量指针和常量引用的对比
- 第9章 复合类型
- 9.1 数组基础
- 9.1.1 先定义数组
- 9.1.2 再看高级数组
- 9.1.3 分析数组的完整性
- 9.1.4 看维数不全
- 9.1.5 看无维数
- 9.2 动态数组
- 9.2.1 在堆上分配空间的动态数组
- 9.2.2 在栈上分配空间的“假动态”数组
- 9.3 数组存储
- 9.3.1 列存储
- 9.3.2 行存储
- 9.4 字符数组
- 9.4.1 定义字符数组
- 9.4.2 字符数组和字符串指针变量
- 9.5 数组初始化
- 9.5.1 先看定义时的初始化
- 9.5.2 初始化赋值语句
- 9.6 指针和数组
- 9.6.1 指向数组的指针
- 9.6.2 指针数组
- 9.7 使用数组
- 9.7.1 索引方式
- 9.7.2 指针方式
- 9.8 枚举
- 9.8.1 枚举基础
- 9.8.2 使用枚举
- 9.9 结构体
- 9.9.1 指向结构的指针
- 9.9.2 使用结构体
- 9.10 联合
- 9.11 自定义类型
- 9.11.1 先看typedef的作用
- 9.11.2 再看typedef的使用
- 9.12 技术解惑
- 9.12.1 字符数组和字符串的区别
- 9.12.2 字符数组和字符串可以相互转换
- 9.12.3 静态数组的速度快于动态数组
- 9.12.4 Arrays与Vector的区别
- 9.12.5 一道关于数组的面试题
- 9.12.6 数组名不是指针
- 9.12.7 作为一个用户自定义的类型,其所占用的内存空间是多少呢
- 第10章 函数
- 10.1 C++函数基础
- 10.1.1 先看定义方式
- 10.1.2 函数分类
- 10.1.3 函数定义实例
- 10.2 函数的参数
- 10.2.1 何谓形参实参
- 10.2.2 使用数组做函数参数
- 10.3 返回值和返回语句
- 10.4 调用函数
- 10.4.1 单独调用
- 10.4.2 函数表达式
- 10.4.3 实参调用
- 10.4.4 参数传递
- 10.5 函数递归
- 10.6 指向函数的指针
- 10.7 将函数作为参数
- 10.8 变量的作用域和生存期
- 10.8.1 变量作用域
- 10.8.2 静态存储变量和动态存储变量
- 10.9 函数main()和命令行处理
- 10.10 技术解惑
- 10.10.1 用typedef来定义一个函数指针类型
- 10.10.2 const关键字在函数中的作用
- 10.10.3 C++函数的内存分配机制
- 10.10.4 主函数和子函数的关系
- 10.10.5 函数声明和函数定义的区别
- 10.10.6 使用全局变量的注意事项
- 10.10.7 使用寄存器变量的注意事项
- 10.10.8 自动变量的特点
- 第11章 输入和输出
- 11.1 iostream对象
- 11.1.1 标准的I/O接口
- 11.1.2 文件I/O
- 11.1.3 字符串I/O
- 11.2 输出
- 11.2.1 预定义类型输出
- 11.2.2 自定义类型输出
- 11.3 输入
- 11.3.1 预定义类型输入
- 11.3.2 自定义类型输入
- 11.4 输入/输出格式化
- 11.4.1 使用ios类成员函数
- 11.4.2 使用操纵函数
- 11.5 文件
- 11.5.1 打开和关闭
- 11.5.2 顺序读写
- 11.5.3 随机读写
- 11.5.4 二进制文件
- 11.5.5 检测EOF
- 11.6 技术解惑
- 11.6.1 输入/输出时数的进制问题
- 11.6.2 数据间隔
- 11.6.3 内存文件映射
- 11.6.4 get和put的值的差异
- 11.6.5 使用控制符控制输出格式
- 第12章 类和封装
- 12.1 类
- 12.1.1 先声明类
- 12.1.2 再看类的属性
- 12.1.3 再看类的方法
- 12.1.4 再看构造函数
- 12.1.5 再看析构函数
- 12.1.6 再看静态成员
- 12.1.7 友元
- 12.1.8 再看修饰符
- 12.1.9 指向类成员的指针
- 12.1.10 嵌套类
- 12.1.11 类文件的组织
- 12.2 对象
- 12.2.1 先定义对象
- 12.2.2 再使用对象
- 12.2.3 再看this指针
- 12.3 技术解惑
- 12.3.1 浅拷贝和深拷贝
- 12.3.2 构造函数的错误认识和正确认识
- 12.3.3 保护性析构函数的作用
- 第13章 命名空间和作用域
- 13.1 命名空间介绍
- 13.2 定义命名空间
- 13.3 使用命名空间
- 13.3.1 使用域限定符
- 13.3.2 使用using指令
- 13.3.3 using声明
- 13.3.4 别名
- 13.4 作用域
- 13.4.1 什么是作用域
- 13.4.2 作用域的分类
- 13.5 技术解惑
- 13.5.1 using指令与using声明的比较
- 13.5.2 为什么需要命名空间
- 13.5.3 命名空间的作用
- 13.5.4 在C++中使用这些头文件的方法
- 第14章 类的继承和派生
- 14.1 继承与派生的基本概念
- 14.2 C++继承机制
- 14.3 继承和派生的基本知识
- 14.3.1 单重继承、多重继承与继承链
- 14.3.2 公有派生和私有派生
- 14.3.3 保护成员与保护派生
- 14.3.4 友元类和友元函数
- 14.4 派生一个类
- 14.4.1 先看基类的使用状况
- 14.4.2 派生的使用状况
- 14.4.3 再看构造函数
- 14.4.4 再看析构函数
- 14.4.5 使用同名方法
- 14.4.6 使用同名属性
- 14.5 单重继承和多重继承
- 14.5.1 单重继承
- 14.5.2 多重继承
- 14.5.3 构造函数和析构函数
- 14.6 虚继承和虚基类
- 14.7 技术解惑
- 14.7.1 通过虚继承解决二义性问题
- 14.7.2 使用C++虚基类的注意事项
- 14.7.3 一个问题
- 14.7.4 多重继承的二义性
- 14.7.5 允许派生类中的成员名和基类中的成员名相同
- 第15章 多态性详解
- 15.1 基本概念
- 15.2 先看宏多态
- 15.3 虚函数
- 15.3.1 虚函数基础
- 15.3.2 静态绑定和动态绑定
- 15.3.3 纯虚函数
- 15.4 抽象类
- 15.4.1 什么是抽象类
- 15.4.2 抽象类的派生
- 15.5 运算符重载
- 15.5.1 运算符重载基础
- 15.5.2 重载一元运算符
- 15.5.3 重载二元运算符
- 15.6 函数重载
- 15.6.1 函数重载基础
- 15.6.2 参数类型不同的重载
- 15.7 流的重载
- 15.7.1 流插入重载
- 15.7.2 流提取重载
- 15.8 覆盖
- 15.8.1 覆盖函数
- 15.8.2 覆盖变量
- 15.9 技术解惑
- 15.9.1 重载、覆盖和隐藏的区别
- 15.9.2 在重载运算符的时候要权衡实施的必要性
- 15.9.3 为什么需要函数重载
- 15.9.4 重载函数的调用匹配
- 15.9.5 另一种虚方法查找方案
- 15.9.6 两种重载方法的比较
- 第16章 模板的威力
- 16.1 基本概念
- 16.2 类模板
- 16.2.1 定义类模板
- 16.2.2 使用类模板
- 16.2.3 类模板的派生
- 16.2.4 类模板和模板类的区别
- 16.3 函数模板
- 16.3.1 定义函数模板
- 16.3.2 函数模板示例
- 16.3.3 模板实例化
- 16.4 模板组合
- 16.5 技术解惑
- 16.5.1 在函数模板中使用多个类型参数时要避免类型参数的二义性
- 16.5.2 函数模板和模板函数的区别
- 16.5.3 函数模板和类模板的区别
- 16.5.4 仿函数的用处
- 第17章 进一步剖析string类
- 17.1 string类的方法
- 17.2 string类的运算
- 17.2.1 查找函数
- 17.2.2 替换函数
- 17.2.3 插入函数
- 17.2.4 删除函数
- 17.2.5 比较函数
- 17.2.6 连接函数
- 17.2.7 赋值函数
- 17.2.8 特性描述函数
- 17.2.9 构造函数
- 17.2.10 迭代器处理
- 17.2.11 其他几种处理函数
- 17.3 string类综合应用
- 17.3.1 头文件123.h
- 17.3.2 类实现文件yinyong.cpp
- 17.3.3 测试使用主文件zonghe.cpp
- 17.4 技术解惑
- 17.4.1 C++字符串和C字符串的转换
- 17.4.2 大小和容量函数
- 17.4.3 cstring类与string类的比较
- 第18章 异常处理
- 18.1 什么是异常处理
- 18.2 C++的异常处理机制
- 18.2.1 throw抛出异常
- 18.2.2 raise抛出异常
- 18.2.3 try-catch异常捕获
- 18.3 异常处理中的构造和析构
- 18.4 C++异常处理机制总结
- 18.5 技术解惑
- 18.5.1 编写软件的目标
- 18.5.2 关于C++的new关键字的异常处理
- 18.5.3 C语言异常处理和结构化异常处理有什么区别?
- 18.5.4 C++抛出异常不捕获,程序的空间会释放吗?
- 18.5.5 throw抛出异常的特点
- 18.5.6 关于C 异常处理的心得体会
- 18.5.7 慎用catch(...)
- 18.5.8 慎用继承体系里的类作为catch的参数
- 18.5.9 对象析构函数被调用的3种场合
- 18.5.10 不要在异常处理体系中寄希望于类型转换
- 18.5.11 有C++异常处理体系捕获不到的东西吗?
- 18.5.12 set_unexpected函数的用处
- 18.5.13 不要让异常逃离析构函数
- 第19章 内存管理
- 19.1 内存分类
- 19.2 栈内存管理
- 19.2.1 申请栈内存
- 19.2.2 使用栈内存
- 19.2.3 释放栈内存
- 19.2.4 改变内存大小
- 19.3 堆内存管理
- 19.3.1 申请堆内存
- 19.3.2 使用堆内存
- 19.3.3 释放堆内存
- 19.3.4 改变大小
- 19.4 技术解惑
- 19.4.1 堆和栈的区别
- 19.4.2 常见的内存错误及其对策
- 19.4.3 防止发生溢出错误
- 第20章 预处理
- 20.1 什么是预处理
- 20.2 C++中常见的预处理
- 20.2.1 文件包含
- 20.2.2 条件编译
- 20.2.3 布局控制
- 20.2.4 宏替换
- 20.2.5 其他预编译指令
- 20.3 分析宏的常见陷阱
- 20.4 技术解惑
- 20.4.1 预处理的未来
- 20.4.2 两者的意义
- 20.4.3 一个初学者的问题
- 第21章 错误和调试
- 21.1 什么是错误
- 21.1.1 Bug的由来
- 21.1.2 程序设计方面的解释
- 21.2 常见的错误分析
- 21.3 程序调试常见错误
- 21.4 C++编程中的调试技巧
- 21.4.1 调试标记
- 21.4.2 运行期间调试标记
- 21.4.3 把变量和表达式转换成字符串
- 21.4.4 C语言的assert()
- 21.5 技术解惑
- 21.5.1 编写规范易懂的代码
- 21.5.2 编写安全可靠的代码
- 21.5.3 Visual C++调试技术
- 21.5.4 常见的非语法错误
- 第22章 初入江湖——图书借阅系统的实现过程
- 22.1 项目要求
- 22.2 需求分析
- 22.3 系统具体实现
- 22.3.1 数据结构设计
- 22.3.2 系统主文件rent.cpp
- 22.3.3 菜单处理文件mainfunction.h
- 22.3.4 函数定义文件subfunction.h
- 22.3.5 菜单处理实现文件mainfunction.cpp
- 22.3.6 功能函数实现文件subfunction.cpp
- 第23章 开始闯关(1)——C++实现网络应用项目
- 23.1 项目要求
- 23.1.1 客户机/服务器模式介绍
- 23.1.2 客户机/服务器模式的运作流程
- 23.2 实现原理
- 23.2.1 什么是winsocket编程接口
- 23.2.2 winsocket中的函数
- 23.3 具体实现
- 23.3.1 客户端和服务器端的公用文件
- 23.3.2 实现服务器端
- 23.3.3 实现客户端
- 第24章 开始闯关(2)——C++实现游戏项目
- 24.1 计算机游戏基础
- 24.1.1 游戏的基本流程
- 24.1.2 游戏元素
- 24.1.3 游戏层次
- 24.2 项目分析
- 24.2.1 游戏的角色
- 24.2.2 游戏界面表现
- 24.3 具体实现
- 24.3.1 实现相关位图
- 24.3.2 变量与函数
- 24.3.3 实现全屏
- 24.3.4 类初始化
- 24.3.5 实现具体显示界面
- 24.3.6 信息提示
- 24.3.7 和时间段相关的操作
- 24.3.8 键盘操作
- 24.3.9 我方发射子弹
- 24.3.10 敌机出现
- 24.3.11 敌机发射子弹
- 24.3.12 敌机子弹移动
- 24.3.13 火力实现
- 第25章 功成名就——DirectX实现媒体播放器
- 25.1 DirectX技术基础
- 25.1.1 DirectX技术概述
- 25.1.2 DirectX的基本结构及组成
- 25.1.3 DirectX主要组件介绍
- 25.2 系统分析和设计
- 25.2.1 功能需求和效果展示
- 25.2.2 设计FilterGraph结构
- 25.3 实现媒体控制类
- 25.3.1 CDXGraph类初始化
- 25.3.2 创建Graph滤波器链表
- 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.4.6 实现音量调节功能
- 25.4.7 添加背景图片
- 第26章 笑傲江湖——C++网络视频监控系统
- 26.1 系统分析
- 26.2 系统设计
- 26.3 系统预览
- 26.4 数据库设计
- 26.5 选购监控卡
- 26.6 具体编程实现
- 26.6.1 设计公共模块
- 26.6.2 设计主窗体
- 26.7 设计管理员登录模块
- 26.8 设计监控管理模块
- 26.8.1 监控管理技术分析
- 26.8.2 编程监控管理
- 26.8.3 单元测试处理
- 26.9 设计广角自动监控模块
- 26.9.1 可行性分析
- 26.9.2 编程实现
- 26.9.3 单元测试
- 26.10 设计视频回放模块
- 26.11 分析绚丽界面的实现方法
- 欢迎来到异步社区!
展开全部
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。