新闻资讯
看你所看,想你所想

零基础学C++

零基础学C++

零基础学C++

《零基础学C++》是2009年1月机械工业出版社出版的图书,作者是杨彦强、刘袁红、王浩。

基本介绍

  • 书名:零基础学C++
  • 作者:杨彦强、刘袁红、王浩
  • ISBN:9787111252269
  • 页数:476页
  • 定价:69.00
  • 出版社:机械工业出版社
  • 出版时间:2009年1月1日
  • 装帧:平装
  • 开本:16开
  • 版次:第1版

内容简介

阅读和学习本书并不要求读者有C++语言的基础,通过几百个简洁高效的代码,《零基础学C++(第2版)》将带领读者循序渐进地领略C++语言的魅力所在。本书採用从无到有、由浅入深、逐级递进的编写方式,尤其适合无C++语言基础或C语言基础薄弱的程式设计师阅读。本书共分为六篇21章,介绍了Visual C++6开发环境的搭建、C++语言的基本数据类型、C++语言的表达式、函式、函式重载、类的继承、多态、记忆体管理方式、档案存储、错误与异常、RTTI、String类、编码风格与程式编译等内容,最后还对世界500强中IT公司常见面试题进行了讲解。本书非常适合C++语言的初、中级学者阅读,并可作为开发人员的参考手册。

图书目录

前言
第一篇  C++基础
第1章  C++概述
1.1  了解计算机
1.1.1  计算机硬体
1.1.2  计算机软体
1.2  程式设计语言
1.2.1  机器语言
1.2.2  彙编语言
1.2.3  高级语言
1.2.4  数据结构和算法
1.2.5  面向过程的程式设计(POP)
1.2.6  面向对象的程式设计(OOP)
1.3  C++简介
1.3.1  C++语言发展历程
1.3.2  C++语言特点
1.3.3  C++程式开发基本过程
1.4  C++开发环境的搭建
1.4.1  Visual C++ 6开发环境简介
1.4.2  开发步骤
1.5  第一个C++程式
1.6  小结
1.7  上机实践习题
第2章  开始C++之旅
2.1  C++程式的结构
2.1.1  注释
2.1.2  编译预处理与新旧标準
2.1.3  主函式
2.1.4  名称空间
2.1.5  C++语素
2.2  变数与基本类型
2.2.1  变数
2.2.2  整型
2.2.3  浮点型
2.2.4  基本字元型
2.2.5  宽字元型
2.2.6  布尔型
2.3  常量
2.3.1  整型常量和浮点型常量
2.3.2  字元型常量
2.3.3  字元串常量
2.3.4  符号常量
2.3.5  枚举常量
2.4  运算符与表达式
2.4.1  算术运算
2.4.2  逻辑运算
2.4.3  短路表达式
2.4.4  关係运算
2.4.5  大有文章: 变数是否为“0”
2.4.6  条件运算
2.4.7  位运算
2.4.8  赋值运算
2.4.9  ++和--
2.4.10  逗号表达式
2.4.11  sizeof运算符与sizeof表达式
2.4.12  运算符的优先权和结合性
2.5  类型转换
2.5.1  赋值转换
2.5.2  表达式中的转换
2.5.3  强制类型转换
2.5.4  函式调用和传递参数时的类型转换
2.6  流程控制语句
2.6.1  if...else...选择结构
2.6.2  switch结构
2.6.3  if...else...结构和switch结构的比较
2.6.4  for循环结构
2.6.5  for循环结构嵌套
2.6.6  while循环结构
2.6.7  do...while循环结构
2.6.8  循环语句的效率
2.6.9  流程转向控制语句之break
2.6.10  流程转向控制语句之continue
2.6.11  自由转向语句goto
2.6.12  程式中止函式exit()
2.7  小结
2.8  上机实践习题
第二篇  C++过程开发
第3章  数组和C风格字元串
3.1  什幺是数组
3.2  一维数组
3.2.1  一维数组的声明
3.2.2  初始化一维数组
3.2.3  一维数组套用举例
3.2.4  数组操作注意事项
3.3  C 风格字元串
3.3.1  C 风格字元串的声明
3.3.2  字元数组的cin和cout
3.3.3  get()函式和getline()函式
3.3.4  cin与get()/getline()函式的搭配问题
3.3.5  访问C风格字元串中的某个元素
3.3.6  C风格字元串处理函式
3.4  多维数组
3.4.1  声明一个多维数组
3.4.2  初始化多维数组
3.4.3  多维数组套用举例
3.4.4  多维数组在记忆体中是如何排列元素的
3.5  小结
3.6  上机实践习题
第4章  指针和引用
4.1  指针的定义与使用
4.1.1  声明一个指针变数
4.1.2  初始化指针变数
4.1.3  指向指针的指针
4.1.4  指针赋值
4.2  指针的运算
4.2.1  指针与整数的加减
4.2.2  同类型指针间的比较
4.2.3  同类型指针相减
4.3  动态记忆体分配
4.3.1  使用new动态分配记忆体
4.3.2  使用delete动态释放及动态申请的记忆体
4.3.3  使用new申请动态数组
4.3.4  不要使用或释放已经释放的记忆体块
4.3.5  使用malloc和free动态申请记忆体
4.3.6  动态记忆体申请并不一定能成功
4.4  指针和const
4.4.1  禁止改写指针(常量指针或常指针)
4.4.2  禁止改写间接引用
4.4.3  既禁止改写指针,又禁止改写间接引用
4.5  指针与数组
4.5.1  数组名指针
4.5.2  数组元素的指针形式
4.5.3  指向数组的指针
4.5.4  指针数组
4.6  引用
4.6.1  引用的声明
4.6.2  引用的特点
4.6.3  引用的使用限制
4.6.4  其他要说明的问题
4.7  小结
4.8  上机实践习题
第5章  结构、共用体和鍊表
5.1  结构
5.1.1  如何定义一个结构
5.1.2  结构变数的声明和使用
5.1.3  结构变数的初始化
5.1.4  结构变数间是否可以相互赋值
5.1.5  结构体变数的sizeof
5.2  共用体
5.2.1  共用体的定义
5.2.2  共用体和结构的区别
5.2.3  共用体变数的声明和初始化
5.2.4  共用体使用举例
5.2.5  共用体的sizeof
5.3  结构数组和共用体数组
5.3.1  结构数组的声明和初始化
5.3.2  共用体数组的声明和初始化
5.4  指向结构的指针
5.4.1  声明一个结构指针
5.4.2  结构指针的初始化
5.4.3  使用指针访问结构成员
5.5  鍊表
5.5.1  鍊表的结构
5.5.2  创建鍊表
5.5.3  鍊表与数组的区别
5.5.4  鍊表的遍历和查找
5.5.5  鍊表的插入和删除
5.6  小结
5.7  上机实践习题
第6章  用函式合理组织程式
6.1  模组化带来的好处
6.1.1  函式的调用过程
6.1.2  抽象和封装
6.1.3  实现一个函式
6.2  函式定义
6.2.1  函式头
6.2.2  函式体
6.2.3  函式定义补充说明
6.3  函式声明
6.3.1  为什幺要进行函式声明
6.3.2  如何声明一个函式
6.3.3  分割程式档案
6.4  函式调用
6.4.1  形参和实参
6.4.2  参数类型转换
6.4.3  值传递
6.4.4  指针传递
6.4.5  引用传递
6.4.6  对3种传递的补充
6.4.7  默认参数调用
6.4.8  inline函式
6.5  递归
6.6  函式的重载
6.6.1  何时使用函式重载
6.6.2  如何实现函式重载
6.6.3  陷阱:隐式转换导致重载函式出现二义性
6.7  C++如何使用记忆体
6.7.1  自动存储(栈存储)
6.7.2  静态存储(编译器预分配)
6.8  作用域与可见域
6.8.1  作用域
6.8.2  可见域
6.8.3  函式的作用域和可见域
6.9  小结
6.10  上机实践习题
第7章  关于函式的高级专题
7.1  记忆体使用错误剖析
7.1.1  记忆体泄露
7.1.2  野指针
7.1.3  试图修改常量
7.1.4  用错sizeof
7.1.5  记忆体越界访问
7.1.6  变数的初始化
7.2  重申:函式参数传递和返回机制
7.2.1  参数传递时的“副本”
7.2.2  函式返回时的“副本”
7.3  函式与指针
7.3.1  指向函式的指针
7.3.2  typedef
7.3.3  通过函式指针将函式作为另一个函式的参数
7.3.4  函式指针数组
7.3.5  返回函式指针的函式
7.3.6  带参主函式
7.4  函式与数组
7.4.1  数组名作为函式参数
7.4.2  通过指针得到多于1个的回传值
7.5  函式与结构体、共用体及类对象
7.5.1  3种参数调用
7.5.2  3种返回机制
7.6  函式编写的建议
7.6.1  合理使用const
7.6.2  检查输入参数的有效性
7.6.3  函式返回类型的判断
7.7  小结
7.8  上机实践习题
第三篇  面向对象的C++
第8章  面向对象技术基础
8.1  面向对象基本概念
8.1.1  类的概念
8.1.2  类是分层的
8.1.3  类和对象的关係
8.2  C++类的定义
8.2.1  类定义的基本形式
8.2.2  类定义示例
8.2.3  class和struct
8.3  C++类的实现
8.3.1  在类定义时定义成员函式
8.3.2  在类定义的外部定义成员函式
8.4  C++类的使用
8.4.1  声明一个对象
8.4.2  对象的作用域、可见域和生存期
8.5  对象的创建和撤销
8.5.1  构造函式的作用
8.5.2  构造函式可以有参数
8.5.3  构造函式支持重载
8.5.4  构造函式允许按参数默认方式调用
8.5.5  初始化表达式
8.5.6  析构函式
8.5.7  显式调用析构函式
8.6  複製构造函式
8.6.1  複製构造函式调用机制
8.6.2  默认複製构造函式带来的问题
8.6.3  解决方案-显式定义複製构造函式
8.6.4  关于构造函式和複製构造函式
8.7  特殊数据成员
8.7.1  const数据成员
8.7.2  引用成员
8.7.3  类对象成员
8.7.4  特别说明
8.7.5  static数据成员
8.8  特殊函式成员
8.8.1  静态成员函式
8.8.2  const与成员函式
8.9  对象的组织
8.9.1  const对象
8.9.2  指向对象的指针
8.9.3  对象的大小
8.9.4  this指针
8.9.5  对象数组
8.9.6  对象鍊表
8.10  为对象动态分配记忆体
8.10.1  使用new和delete为单个对象分配/释放动态记忆体
8.10.2  使用new和delete为对象数组分配/释放动态空间
8.10.3  malloc和free能否为对象动态申请记忆体
8.11  小结
8.12  上机实践习题
第9章  关于对象的高级专题
9.1  类的作用域
9.2  类定义的作用域与可见域
9.3  对象的生存期、作用域和可见域
9.3.1  先定义,后实例化
9.3.2  对象记忆体的释放与堆记忆体
9.4  友元
9.4.1  友元的非成员函式
9.4.2  友元的成员函式
9.4.3  友元函式的重载
9.4.4  友元类
9.4.5  友元是否破坏了封装性
9.5  运算符重载
9.5.1  运算符重载规则
9.5.2  以成员函式形式重载运算符
9.5.3  以友元函式形式重载运算符
9.5.4  友元函式形式和成员函式形式的比较
9.5.5  对运算符重载的补充说明
9.6  运算符重载範例
9.6.1  赋值运算符
9.6.2  函式调用运算符
9.6.3  下标运算符
9.7  类型转换
9.7.1  由其他类型向定义类的转换
9.7.2  由自定义类向其他类型的转换
9.7.3  隐式转换带来的二义性
9.8  重载函式选择规则
9.8.1  重载解析
9.8.2  什幺是完全匹配
9.9  小结
9.10  上机实践习题
第10章  继承
10.1  什幺是继承
10.1.1  简单示例
10.1.2  继承的层次性
10.2  派生类
10.2.1  public派生与private派生
10.2.2  protected成员与protected派生
10.3  多基派生
10.3.1  多基派生的声明和定义
10.3.2  二义性问题
10.3.3  解决方案
10.4  虚基类
10.4.1  共同基类带来的二义性
10.4.2  解决方案
10.4.3  虚基派生二义性与多基派生二义性不同
10.5  派生类的构造函式和析构函式
10.5.1  派生类的构造函式
10.5.2  派生类的析构函式
10.5.3  多基派生类的构造函式和析构函式
10.5.4  虚基派生类的构造函式和析构函式
10.6  分清继承还是组合
10.6.1  继承不是万金油
10.6.2  组合
10.7  基类与派生类对象间的相互转换
10.7.1  类型适应
10.7.2  多基继承时的情况
10.7.3  公共基类
10.7.4  虚基类的情况
10.8  小结
10.9  上机实践习题
第11章  多态
11.1  多态与虚函式
11.1.1  静态联编
11.1.2  动态联编
11.1.3  为什幺需要虚函式
11.1.4  虚函式的声明和定义
11.2  虚函式的访问
11.2.1  对象名访问
11.2.2  指针访问
11.2.3  引用访问
11.2.4  类内访问
11.2.5  在构造函式或析构函式中进行访问
11.3  纯虚函式与抽象类
11.3.1  纯虚函式的声明和定义
11.3.2  抽象类
11.3.3  另一种抽象类:类中只定义了protected型的构造函式
11.3.4  延伸:构造函式能否为private型
11.3.5  虚析构函式
11.4  虚函式引入的二义性
11.4.1  多基派生
11.4.2  共同基类和虚继承
11.5  重载、覆盖与隐藏
11.5.1  重载
11.5.2  覆盖
11.5.3  隐藏
11.6  小结
11.7  上机实践习题
第四篇  泛 型 编 程
第12章  模板
12.1  为什幺要定义模板
12.1.1  类型参数化
12.1.2  模板的定义
12.2  函式模板
12.2.1  函式模板的使用
12.2.2  隐式实例化
12.2.3  显式实例化
12.2.4  特化
12.2.5  重载
12.2.6  优先权与执行顺序
12.3  类模板
12.3.1  定义类模板
12.3.2  隐式实例化
12.3.3  显式实例化
12.3.4  显式特化
12.3.5  部分特化
12.3.6  重载和优先权
12.4  模板的嵌套
12.4.1  函式成员模板
12.4.2  对象成员模板
12.5  模板参数
12.6  小结
12.7  上机实践习题
第13章  标準模板库
13.1  理解STL
13.1.1  容器
13.1.2  适配器
13.1.3  叠代器
13.1.4  算法
13.2  使用序列式容器
13.2.1  序列式容器的创建和元素的访问
13.2.2  所有容器都支持的特徵
13.2.3  序列式容器中元素的插入和删除
13.2.4  vector容器
13.2.5  deque容器
13.2.6  list容器
13.3  使用关联式容器
13.3.1  set容器
13.3.2  multiset容器
13.3.3  map容器
13.3.4  multimap容器
13.4  关联式容器支持的成员函式操作
13.4.1  元素的插入
13.4.2  元素的删除
13.4.3  元素的查找与访问
13.5  叠代器
13.5.1  理解叠代器本质
13.5.2  叠代器类型
13.5.3  为什幺要定义这幺多叠代器
13.5.4  容器中定义的叠代器类型与5种类型的对应
13.5.5  流叠代器
13.5.6  叠代器失效
13.6  泛型算法
13.6.1  什幺是函式对象
13.6.2  算法分类
13.7  适配器
13.7.1  容器适配器
13.7.2  叠代器适配器
13.7.3  函式适配器
13.8  小结
13.9  上机实践习题
第五篇  输入输出处理和编程规範
第14章  输入输出和档案
14.1  输入输出概述
14.1.1  什幺是档案
14.1.2  流
14.1.3  缓冲区
14.1.4  重定向
14.1.5  3种输入输出机制
14.2  高层I/O
14.2.1  标準输出函式printf
14.2.2  标準输入函式scanf
14.2.3  扫描集
14.2.4  sprintf函式和sscanf函式
14.2.5  fprintf函式和fscanf函式
14.2.6  档案访问机制
14.3  流类库
14.3.1  流类库更安全、更高效
14.3.2  流类库层次
14.4  输出流
14.4.1  操作符<<
14.4.2  其他ostream方法
14.4.3  格式状态字
14.4.4  格式控制值的默认值
14.4.5  flag函式读取和设定格式状态字
14.4.6  使用setf函式和unsetf函式设定格式关键字
14.4.7  设定域宽
14.4.8  填充字元
14.4.9  浮点数输出和显示精度
14.4.10  控制符
14.5  输入流
14.5.1  >>操作符
14.5.2  输入流与格式状态字
14.5.3  输入流与域宽
14.5.4  使用get函式读取单个字元
14.5.5  使用get函式和getline函式读取C风格字元串
14.5.6  其他istream方法
14.6  流状态
14.6.1  什幺是流状态
14.6.2  读取流状态
14.6.3  管理流状态
14.7  重载>>和<<
14.7.1  插入符的重载
14.7.2  抽取符的重载
14.8  档案操作
14.8.1  档案操作基本过程
14.8.2  档案的打开
14.8.3  取消档案和流的关联
14.8.4  档案的读写
14.8.5  文本档案的读写
14.8.6  二进制档案的读写
14.8.7  档案定位指针和随机读取
14.9  字元串流
14.9.1  strstream类族
14.9.2  sstream类族
14.10  小结
14.11  上机实践习题
第15章  名称空间
15.1  什幺是名称空间
15.1.1  名称空间範例
15.1.2  定义名称空间
15.2  实体的作用域与可见域
15.2.1  实体可见域
15.2.2  可见域的扩展
15.2.3  using声明机制
15.2.4  using声明带来的多重声明问题(二义性)
15.2.5  空间内的禁止
15.2.6  先声明,后使用
15.3  名称空间的作用域与可见性
15.3.1  名称空间的定义策略
15.3.2  推荐用法
15.3.3  名称空间嵌套
15.3.4  using编译指令
15.3.5  未命名的名称空间
15.4  对名称空间的思考
15.5  小结
15.6  上机实践习题
第16章  异常和错误
16.1  编码时的防错
16.1.1  调用abort函式或exit函式
16.1.2  返回错误标誌
16.2  异常机制
16.2.1  关键字throw
16.2.2  异常处理程式
16.2.3  自定义异常对象
16.2.4  有继承关係的类异常
16.2.5  terminate函式和set_terminate函式
16.2.6  unexpected函式与set_unexpected函式
16.2.7  标準异常
16.2.8  对unexpected函式的补充
16.3  异常发生时的记忆体管理
16.3.1  堆叠解退
16.3.2  异常处理机制与函式的不同
16.3.3  构造函式中抛出异常
16.3.4  记忆体泄露
16.3.5  析构函式中可否抛出异常
16.4  auto_ptr类
16.4.1  使用auto_ptr类模板
16.4.2  关于auto_ptr的若干问题
16.5  小结
16.6  上机实践习题
第17章  RTTI和类型转换操作符
17.1  RTTI机制
17.1.1  dynamic_cast操作符
17.1.2  typeinfo类和typeid操作符
17.1.3  补充说明
17.2  类型转换操作符
17.2.1  const_cast操作符
17.2.2  static_cast操作符
17.2.3  reinterpret_cast操作符
17.3  小结
17.4  上机实践习题
第18章  string字元串类
18.1  为什幺要使用string类
18.2  声明一个字元串
18.3  字元串的输入输出
18.4  string类功能
18.4.1  string字元串和C风格字元串的转换
18.4.2  赋值和清空
18.4.3  元素删除
18.4.4  元素追加与相加
18.4.5  元素插入
18.4.6  大小和容量
18.4.7  元素存取
18.4.8  字元串比较
18.4.9  提取子串
18.4.10  搜寻与查找
18.5  小结
18.6  上机实践习题
第19章  编码风格
19.1  程式的排版
19.1.1  注释
19.1.2  空行的用法
19.1.3  代码行
19.1.4  空格
19.1.5  缩进与对齐
19.1.6  &和*的位置
19.2  命名规则
19.2.1  Windows风格和Unix风格
19.2.2  如何对程式实体命名
19.3  项目档案的组织
19.3.1  模组划分
19.3.2  头档案
19.3.3  定义档案
19.3.4  目录结构
19.4  小结
19.5  上机实践习题
第20章  程式编译
20.1  程式的编译流程
20.2  预处理
20.2.1  头档案包含
20.2.2  宏
20.2.3  条件编译
20.2.4  #ifdef、 #ifndef与重複包含
20.2.5  使用const代替#define定义常量
20.2.6  inline与#define的比较
20.3  VC6调试入门
20.3.1  断点的设定与去除
20.3.2  条件断点
20.3.3  数据断点
20.3.4  讯息断点
20.3.5  观察视图(Watch)
20.3.6  记忆体视图(Memory)
20.3.7  变数视图(Variables)
20.3.8  暂存器视图(Registers)
20.3.9  调用堆叠视图(Call Stack)
20.3.10  反彙编视图(Disassembly)
20.3.11  进程控制
20.4  其他调试手段
20.4.1  Debug模式和Release模式
20.4.2  assert宏
20.4.3  输出字元串
20.5  小结
20.6  上机实践习题
第六篇  面试题精选
第21章  常见面试题
21.1  常见基本知识问答题
面试题1:简述面向对象的3个基本特徵
面试题2:局部变数能否和全局变数重名
面试题3:类成员函式的重载、覆盖和隐藏的区别是什幺
面试题4:用变数a给出下面的定义
面试题5:在C++中,下面的结构是合法的吗?如果是,其作用是什幺
面试题6:在非C++中建类 A 和 B,在哪几种情况下B能隐式转化为A
面试题7:C++中的空类,默认产生哪些类成员函式
面试题8:C++有哪些性质(面向对象特点)
面试题9:子类析构时要调用父类的析构函式吗
面试题10:什幺是引用?声明和使用“引用”要注意哪些问题
面试题11:将引用作为函式返回值类型的格式及优点有哪些
面试题12:引用与指针的区别是什幺
面试题13:重载和重写(覆盖)的区别
面试题14:多态的作用是什幺
面试题15:请指出const与#define相比有何优点
面试题16:C语言中static关键字的具体作用有哪些
面试题17:如何判断程式是由C 编译程式还是由C++编译程式编译的
面试题18:关键字const的含义是什幺
21.2  世界500强公司的智力问答题
面试题19:工人分金条
面试题20:分蛋糕
面试题21:过桥问题
面试题22:黑白帽子
面试题23:电梯与钻石
面试题24:手电筒传递
面试题25:烧绳问题
面试题26:圆的下水道盖子
面试题27:选建筑师
面试题28:天平分盐
面试题29:分不开的钱
面试题30:小鸟追火车
面试题31:给红色最大的机会
面试题32:镜子中的影像
面试题33:污染的药丸
面试题34:称出不是标準重量的水
面试题35:多彩的果冻
面试题36:电子游戏机
面试题37:监狱里的囚犯
面试题38:灯的状态
面试题39:时针和分针
面试题40:3个奇数
面试题41:屋内的灯
面试题42:找出最重的球
面试题43:盲人分袜子
面试题44:烧香计时
面试题45:平分蜂蜜
面试题46:猜经理女儿的年龄
面试题47:两个圆环
面试题48:喝啤酒
面试题49:算24点
面试题50:聪明人
面试题51:海盗分金币
面试题52:到底是什幺牌
面试题53:聪明的老闆娘
面试题54:找出不同重量的球
21.3  分析题
面试题55:分析下面的程式段,显示最后的结果
面试题56:分析程式最后的输出结果
面试题57:分析最后输出的结果
面试题58:求下面函式的返回值
面试题59:分析最后输出的结果
面试题60:分析最后输出的结果
21.4  编程题
面试题61:结果输出到档案
面试题62:String类的具体实现
面试题63:鍊表题,一个鍊表的节点结构
面试题64:写一个函式并找出在一个整数数组中第二大的数
面试题65:字元串的逆序输出
面试题66:判断作业系统的位数
面试题67:实现对数组的降序排序
面试题68:斐波那契数列1、1、2、3、5等,编写程式求第10项

相关推荐

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com