C++ 打印类的继承关系和虚函数表结构信息

首先创建一个demo

//demo vptr.cpp
#include <iostream>

class Base {
 public:
	virtual void funcA()
	{
		std::cout << "Base::funcA" << std::endl;
	}
	virtual void funcB()
	{
		std::cout << "Base::funcB" << std::endl;
	}

};

class A : public Base {
 public:
	virtual void funcA()
	{
		std::cout << "A::funcA" << std::endl;
	}
	void funcB()
	{
		std::cout << "A:funcB" << std::endl;
	}
};

int main()
{
	std::cout << "Base " << sizeof(Base) << " A " << sizeof(A) << std::endl;

	return 0;
}

MinGW

g++ -fdump-class-hierarchy -fsyntax-only vptr.cpp

如果使用以上命令,出现报错:

cc1plus: error: unrecognized command line option ‘-fdump-class-hierarchy’

说明当前Linux的GCC版本较高,因为以上命令只支持GCC 7.X以下,高版本已被删除。

GCC 8.0以上的使用以下命令:

g++ -fdump-lang-class vptr.cpp

然后就会成功生成vptr.cpp.001l.class文件,进行查看即可。

image-20220513145000264

image-20220513145041665

VS

可以直接在VS里,工具-命令行打开

cl -d1reportSingleClassLayout##classname #classname.cpp

##classname(拼接类名),#classname字符串化类名

比如这里可以看Base基类

 cl /d1 reportSingleClassLayoutBase vptr.cpp

image-20220513154641528

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《Visual C++ 数据库系统开发完全手册》(目录) 第一篇 Visual C++编程篇 第1章 Visual C++ 6.0开发环境概述 1.1 Visual C++ 6.0概述 1.2 熟悉Visual C++ 6.0的集成开发环境 1.2.1 进入Visual C++ 6.0环境 1.2.2 Visual C++ 6.0的主菜单 1.2.3 Visual C++ 6.0的工具栏 1.2.4 工作区(Workspace)窗口 1.2.5 编辑窗口 1.2.6 输出(Output)窗口 第2章 C++语言基础 2.1 C++概述 2.1.1 C++主要特点 2.1.2 利用Visual C++编制C++程序 2.2 C++程序的组成 2.2.1 标识符 2.2.2 关键字 2.2.3 常量与变量 2.2.4 基本运算符 2.3 C++数据类型 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.5 函数 2.5.1 函数的定义与调用 2.5.2 默认参数 2.5.3 函数重载概述 2.6 编译预处理指令 2.6.1 #include文件包含指令 2.6.2 #define宏定义指令 2.6.3 条件编译指令 第3章 面向对象的程序设计 3.1 概述 3.1.1 面向对象程序设计方法 3.1.2 面向对象程序设计特征 3.2 C++面向对象程序设计基础 3.2.1 C++类的定义与实现 3.2.2 构造函数与析构函数 3.2.3 静态成员 3.2.4 this指针 3.2.5 友元函数 3.3 类的继承机制 3.3.1 基类与派生类概念 3.3.2 单一派生 3.3.3 多重继承 3.3.4 基类 3.4 多态性与函数 3.5 抽象类与纯函数 3.6 C++模板 3.6.1 函数模板 3.6.2 类模板 第4章 创建应用程序 4.1 应用程序向导 4.1.1 Visual C++ 6.0中的向导类型 4.1.2 Visual C++ 6.0中的应用程序向导 4.1.3 MFC应用程序的开发流程 4.2 应用程序向导生成文件 4.2.1 文件类型 4.2.2 典型文件举例 4.3 ClassWizard(类向导) 4.3.1 ClassWizard的功能 4.3.2 ClassWizard的简单应用 4.3.3 为项目添加新类 4.3.4 手工添加消息处理函数 第5章 文档与视图 5.1 Document与View概述 5.2 Document与View之间的相互作用 5.2.1 CView类的GetDocument()成员函数 5.2.2 CDocument类的UpdateAllViews()成员函数 5.2.3 CView类的OnUpdate()成员函数 5.3 菜单设计 5.3.1 建立菜单资源 5.3.2 添加菜单命令处理函数 5.3.3 弹出式菜单 5.4 工具栏和状态栏设计 5.4.1 建立工具栏资源 5.4.2 工具栏的显示 5.4.3 定制状态栏 5.5 使用不同的视图 5.5.1 滚动视图 5.5.2 网页视图 5.5.3 多文档视图 第6章 MFC原理及方法 6.1 MFC概述 6.2 Windows编程思想 6.2.1 Windows API 6.2.2 事件驱动程序 6.2.3 消息概述 6.3 MFC微软类库 6.3.1 MFC发展历史 6.3.2 MFC应用程序的生与死 6.3.3 常用MFC文件及库文件 6.4 常用的MFC类 6.4.1 CRuntimeClass结构 6.4.2 CObject类 6.4.3 CCmdTarget类 6.4.4 CWinThread类 6.4.5 CWinApp类 6.4.6 CWnd类 6.4.7 CFrameWnd类 6.4.8 CDocument和CView类 6.5 MFC消息机制 6.5.1 系统定义的消息 6.5.2 用户定义的消息 6.5.3 消息映射 6.5.4 消息的发送 6.6 MFC宏 6.6.1 运行时类型识别宏 6.6.2 MFC调试宏 第7章 对话框及常用控件 7.1 对话框概述 7.1.1 基于对话框的应用程序 7.1.2 对话框类CDialog 7.2 向对话框类中添加菜单 7.3 向对话框类中添加工具栏 7.4 向对话框中添加状态栏 7.5 Windows公共对话框 7.5.1 CColorDialog对话框 7.5.2 CFileDialog对话框 7.5.3 CFontDialog对话框 7.6 常用控件 7.6.1 控件概述 7.6.2 使用控件 7.6.3 通用控件类成员 7.6.4 静态文本控件(Static Text) 7.6.5 按钮控件(Button) 7.6.6 编辑控件(Edit Box) 7.6.7 列框控件(List Box) 7.6.8 组合框控件(Combo Box) 7.6.9 树视图控件(Tree Control) 7.6.10 列视图控件(List Control) 7.6.11 标签控件(Tab Control) 7.7 ActiveX控件 7.8 制作ActiveX控件 7.8.1 制作ActiveX控件的方法 7.8.2 ActiveX控件创建实例 第8章 图形图像及打印技术 8.1 图形设备接口概述 8.2 设备环境类CDC 8.2.1 设备环境简介 8.2.2 设备环境类CDC 8.2.3 设置场景类CDC的简单应用 8.3 画笔类CPen 8.4 画刷类CBrush 8.5 字体类CFont 8.6 位图类CBitmap 8.7 打印基础 8.8 如何打印格 8.8.1 打印流程 8.8.2 怎样打印格 第9章 程序调试与错误处理 9.1 概述 9.2 断点跟踪 9.3 调试窗口 9.3.1 Watch窗口 9.3.2 Call Stack窗口 9.3.3 Memory窗口 9.3.4 Variables窗口 9.3.5 Registers窗口 9.3.6 Disassembly窗口 9.4 错误处理 9.4.1 捕捉错误 9.4.2 C++中的错误处理 9.4.3 编制错误处理程序 第二篇 数据库应用篇 第10章 管理SQL Server 2000 10.1 安装SQL Server 10.2 配置服务器 10.2.1 启动、暂停和停止SQL Server服务器 10.2.2 注册SQL Server 2000服务器 10.2.3 编辑SQL Server 2000注册信息 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.6 导入、导出数据 10.6.1 导入数据库 10.6.2 导入SQL Server数据 10.6.3 导入其他数据源的数据 10.6.4 导出数据库 10.6.5 导出SQL Server数据 第11章 SQL Server 2000数据库设计与操作 11.1 关系数据库 11.1.1 数据库及关系数据库概述 11.1.2 数据库发展历史 11.1.3 关系型数据库 11.2 分析数据库 11.2.1 分析数据库结构 11.2.2 设计数据库 11.3 使用数据库 11.3.1 创建数据库 11.3.2 创建数据 11.3.3 SQL Server中的数据类型 11.3.4 向数据中添加数据 11.4 建立索引 11.4.1 建立和删除惟一索引 11.4.2 定义主键索引 11.5 关系的建立与维护 11.5.1 建立一对一关系 11.5.2 建立一对多关系 11.5.3 删除关系 11.6 使用Visual C++ 6.0与数据库连接 11.6.1 ADO简介 11.6.2 使用ADO连接数据源前的准备工作 11.6.3 Connection与Recordset 11.6.4 打开数据与关闭数据连接 11.7 如何使用ADO 11.7.1 如何打开记录集 11.7.2 怎样使用记录集 11.8 重新封装ADO 11.8.1 RxADO类的制作方法 11.8.2 RxRecordset类的制作方法 第12章 数据查询技巧 12.1 SQL简介 12.2 查询命令SELECT 12.2.1 SELECT命令简介 12.2.2 SELECT子句 12.2.3 FROM子句 12.2.4 WHERE子句 12.2.5 使用ORDER BY排序查询结果 12.2.6 聚合函数 12.2.7 GROUP BY子句 12.2.8 HAVING子句 12.2.9 复杂查询 12.3 插入命令INSERT 12.3.1 INSERT命令简介 12.3.2 简单的INSERT命令 12.3.3 在插入命令中使用SELECT 12.4 更新命令UPDATE 12.4.1 UPDATE命令简介 12.4.2 简单的UPDATE命令 12.4.3 在UPDATE更新命令中使用子查询 12.5 删除命令DELETE 12.5.1 DELETE命令简介 12.5.2 简单的DELETE命令 12.5.3 在删除中使用子查询 12.6 数据备份与数据还原 12.6.1 数据备份命令BACKUP 12.6.2 数据还原命令RESTORE 第13章 存储过程、触发器与视图 13.1 存储过程概述 13.2 存储过程的应用 13.2.1 新建存储过程 13.2.2 修改存储过程 13.2.3 删除存储过程 13.2.4 获取数据库中存储过程 13.2.5 获取指定存储过程语句 13.2.6 存储过程的调用 13.3 触发器介绍 13.4 使用触发器 13.4.1 新建触发器 13.4.2 修改触发器 13.4.3 删除触发器 13.5 视图介绍 13.6 视图应用 13.6.1 新建视图 13.6.2 修改视图 13.6.3 删除视图 13.6.4 获得数据库中所有的视图 13.6.5 获得指定视图语句 第三篇 实例开发篇 第14章 定制自己的工作环境 14.1 工具环境设置介绍 14.1.1 Editor 14.1.2 Tabs 14.1.3 Debug 14.1.4 Compatibility 14.1.5 Build 14.1.6 Directories 14.1.7 Source Control 14.1.8 Workspace 14.1.9 Macros 14.1.10 Format 14.2 定制自己的工作环境 14.3 常用快捷键 第15章 Visual C++ 6.0在资产设备管理系统中的应用 15.1 资产设备管理系统概述 15.1.1 开发背景及意义 15.1.2 系统目标 15.2 系统分析 15.2.1 系统规划 15.2.2 系统结构图 15.2.3 业务流程 15.3 数据库设计 15.3.1 数据库概念设计 15.3.2 数据库逻辑结构设计 15.4 处理过程分析 15.4.1 添加资产设备处理过程分析 15.4.2 计提折旧处理过程分析 15.5 程序框架设计 15.6 封装数据库操作 15.6.1 导入ADO动态链接库 15.6.2 封装ADO对象 15.7 菜单设计 15.8 设计状态栏 15.9 设计工具栏 15.10 主窗体设计 15.11 程序设计与编码 15.11.1 资产类别程序设计 15.11.2 添加资产设备程序设计 15.11.3 修改资产设备程序设计 15.11.4 计提折旧程序设计 15.11.5 数据备份程序设计 15.11.6 数据还原程序设计 15.12 疑难问题分析解决 15.12.1 只允许输入数字的编辑框 15.12.2 更改静态文本的字体 15.12.3 为按钮控件添加图标 15.12.4 修改窗口图标 15.12.5 遍历窗口中的控件 15.12.6 固定资产基本概念 15.12.7 固定资产计算公式 15.13 程序调试及错误处理 15.14 程序设计清单 15.15 技术、经验总结 15.15.1 技术总结 15.15.2 经验总结 15.16 系统的编译与发行 第16章 Visual C++ 6.0在物资管理系统中的应用 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 程序的打包与发行 16.6.1 组织安装信息 16.6.2 设置目标系统 16.6.3 设置安装画面 16.6.4 设置系统需求 16.6.5 安装打包程序 第17章 Visual C++ 6.0在商品采购管理系统中的应用 17.1 商品采购管理系统概述 17.1.1 开发背景 17.1.2 运行环境 17.2 系统调查 17.2.1 手工流程 17.2.2 需求分析 17.3 系统分析 17.3.1 系统功能 17.3.2 系统结构图 17.3.3 业务流程 17.4 数据库设计 17.4.1 数据库概念设计 17.4.2 数据库逻辑结构设计 17.5 数据库封装类说明 17.5.1 概述 17.5.2 设计步骤 17.5.3 程序相关代码 17.6 主窗体设计 17.6.1 菜单设计 17.6.2 设计背景画面 17.6.3 程序设计与编码 17.7 采购管理设计 17.7.1 概述 17.7.2 设计步骤 17.7.3 程序相关代码 17.8 疑难问题分析解决 17.8.1 怎样取得当前日期 17.8.2 怎样取得当前路径 17.9 程序调试及错误处理 17.10 技术、经验总结 17.10.1 技术总结 17.10.2 经验总结 第18章 Visual C++ 6.0在仓库管理系统中的应用 18.1 仓库管理系统概述 18.1.1 开发背景及意义 18.1.2 系统目标 18.2 系统分析 18.2.1 系统规划 18.2.2 系统结构图 18.2.3 业务流程 18.3 数据库设计 18.3.1 数据库概念设计 18.3.2 数据库逻辑结构设计 18.4 处理过程分析 18.4.1 商品入库处理过程分析 18.4.2 商品入库查询处理过程分析 18.5 程序框架设计 18.6 菜单设计 18.7 工具栏设计 18.8 主窗体设计 18.9 程序设计与编码 18.9.1 父窗口设计 18.9.2 商品入库程序设计 18.9.3 库存盘点程序设计 18.9.4 入库查询程序设计 18.10 疑难问题分析解决 18.10.1 利用格录入商品 18.10.2 联想录入格的实现 18.11 程序调试及错误处理 18.12 程序设计清单 18.13 技术、经验总结 18.13.1 技术总结 18.13.2 经验总结 18.14 系统的编译与发行 第19章 Visual C++ 6.0在销售管理系统中的应用 19.1 销售管理系统概述 19.1.1 开发背景及意义 19.1.2 系统目标 19.2 系统分析 19.2.1 系统规划 19.2.2 系统结构图 19.2.3 业务流程 19.3 数据库设计 19.3.1 数据库概念设计 19.3.2 数据库逻辑结构设计 19.4 处理过程分析 19.4.1 商品入库处理过程分析 19.4.2 商品销售处理过程分析 19.5 数据库封装类说明 19.5.1 概述 19.5.2 设计步骤 19.5.3 程序相关代码 19.6 主窗体设计 19.6.1 菜单设计 19.6.2 设计背景画面 19.6.3 程序相关代码 19.7 操作员管理程序设计 19.7.1 概述 19.7.2 设计步骤 19.7.3 程序相关代码 19.8 销售管理设计 19.8.1 概述 19.8.2 设计步骤 19.8.3 程序相关代码 19.9 疑难问题分析解决 19.9.1 不显示文字的密码编辑框 19.9.2 数据库参数 19.10 程序调试及错误处理 19.11 程序设计清单 19.12 技术、经验总结 19.12.1 技术总结 19.12.2 经验总结 19.13 系统的编译与发行 第20章 Visual C++ 6.0在图书管理系统中的应用 20.1 图书管理系统概述 20.1.1 开发背景及意义 20.1.2 系统目标 20.2 系统分析 20.2.1 系统规划 20.2.2 系统结构图 20.2.3 业务流程 20.3 数据库设计 20.3.1 数据库概念设计 20.3.2 数据库逻辑结构设计 20.4 处理过程分析 20.4.1 图书信息处理过程分析 20.4.2 销售查询处理过程分析 20.5 程序框架设计 20.6 主窗体设计 20.7 程序设计与编码 20.7.1 系统登录程序设计 20.7.2 操作员管理程序设计 20.7.3 图书信息管理程序设计 20.7.4 图书销售查询程序设计 20.8 疑难问题分析解决 20.8.1 在对话框中添加文档/视图架构 20.8.2 在基于对话框程序中实现打印打印预览 20.9 异常处理 20.10 程序设计清单 20.11 技术、经验总结 20.11.1 技术总结 20.11.2 经验总结 20.12 系统的编译与发行 第21章 Visual C++ 6.0在学生管理系统中的应用 21.1 学生管理系统概述 21.1.1 开发背景及意义 21.1.2 系统目标 21.2 系统分析 21.2.1 系统规划 21.2.2 系统结构图 21.2.3 业务流程 21.3 数据库设计 21.3.1 数据库概念设计 21.3.2 数据库逻辑结构设计 21.4 处理过程分析 21.4.1 科室信息添加处理过程分析 21.4.2 学生违规登记处理过程分析 21.5 主窗体设计 21.6 程序设计与编码 21.6.1 科室信息管理程序设计 21.6.2 学生成绩录入程序设计 21.6.3 学生违规处理程序设计 21.6.4 学生成绩报程序设计 21.7 疑难问题分析解决 21.7.1 导入Excel相关类 21.7.2 在程序中操作Excel 21.7.3 导入Word相关类 21.7.4 在程序中操作Word 21.8 系统测试 21.9 程序设计清单 21.10 技术、经验总结 21.10.1 技术总结 21.10.2 经验总结 21.11 系统的编译与发行
《Visual C++ 数据库系统开发完全手册》(目录) 第一篇 Visual C++编程篇 第1章 Visual C++ 6.0开发环境概述 1.1 Visual C++ 6.0概述 1.2 熟悉Visual C++ 6.0的集成开发环境 1.2.1 进入Visual C++ 6.0环境 1.2.2 Visual C++ 6.0的主菜单 1.2.3 Visual C++ 6.0的工具栏 1.2.4 工作区(Workspace)窗口 1.2.5 编辑窗口 1.2.6 输出(Output)窗口 第2章 C++语言基础 2.1 C++概述 2.1.1 C++主要特点 2.1.2 利用Visual C++编制C++程序 2.2 C++程序的组成 2.2.1 标识符 2.2.2 关键字 2.2.3 常量与变量 2.2.4 基本运算符 2.3 C++数据类型 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.5 函数 2.5.1 函数的定义与调用 2.5.2 默认参数 2.5.3 函数重载概述 2.6 编译预处理指令 2.6.1 #include文件包含指令 2.6.2 #define宏定义指令 2.6.3 条件编译指令 第3章 面向对象的程序设计 3.1 概述 3.1.1 面向对象程序设计方法 3.1.2 面向对象程序设计特征 3.2 C++面向对象程序设计基础 3.2.1 C++类的定义与实现 3.2.2 构造函数与析构函数 3.2.3 静态成员 3.2.4 this指针 3.2.5 友元函数 3.3 类的继承机制 3.3.1 基类与派生类概念 3.3.2 单一派生 3.3.3 多重继承 3.3.4 基类 3.4 多态性与函数 3.5 抽象类与纯函数 3.6 C++模板 3.6.1 函数模板 3.6.2 类模板 第4章 创建应用程序 4.1 应用程序向导 4.1.1 Visual C++ 6.0中的向导类型 4.1.2 Visual C++ 6.0中的应用程序向导 4.1.3 MFC应用程序的开发流程 4.2 应用程序向导生成文件 4.2.1 文件类型 4.2.2 典型文件举例 4.3 ClassWizard(类向导) 4.3.1 ClassWizard的功能 4.3.2 ClassWizard的简单应用 4.3.3 为项目添加新类 4.3.4 手工添加消息处理函数 第5章 文档与视图 5.1 Document与View概述 5.2 Document与View之间的相互作用 5.2.1 CView类的GetDocument()成员函数 5.2.2 CDocument类的UpdateAllViews()成员函数 5.2.3 CView类的OnUpdate()成员函数 5.3 菜单设计 5.3.1 建立菜单资源 5.3.2 添加菜单命令处理函数 5.3.3 弹出式菜单 5.4 工具栏和状态栏设计 5.4.1 建立工具栏资源 5.4.2 工具栏的显示 5.4.3 定制状态栏 5.5 使用不同的视图 5.5.1 滚动视图 5.5.2 网页视图 5.5.3 多文档视图 第6章 MFC原理及方法 6.1 MFC概述 6.2 Windows编程思想 6.2.1 Windows API 6.2.2 事件驱动程序 6.2.3 消息概述 6.3 MFC微软类库 6.3.1 MFC发展历史 6.3.2 MFC应用程序的生与死 6.3.3 常用MFC文件及库文件 6.4 常用的MFC类 6.4.1 CRuntimeClass结构 6.4.2 CObject类 6.4.3 CCmdTarget类 6.4.4 CWinThread类 6.4.5 CWinApp类 6.4.6 CWnd类 6.4.7 CFrameWnd类 6.4.8 CDocument和CView类 6.5 MFC消息机制 6.5.1 系统定义的消息 6.5.2 用户定义的消息 6.5.3 消息映射 6.5.4 消息的发送 6.6 MFC宏 6.6.1 运行时类型识别宏 6.6.2 MFC调试宏 第7章 对话框及常用控件 7.1 对话框概述 7.1.1 基于对话框的应用程序 7.1.2 对话框类CDialog 7.2 向对话框类中添加菜单 7.3 向对话框类中添加工具栏 7.4 向对话框中添加状态栏 7.5 Windows公共对话框 7.5.1 CColorDialog对话框 7.5.2 CFileDialog对话框 7.5.3 CFontDialog对话框 7.6 常用控件 7.6.1 控件概述 7.6.2 使用控件 7.6.3 通用控件类成员 7.6.4 静态文本控件(Static Text) 7.6.5 按钮控件(Button) 7.6.6 编辑控件(Edit Box) 7.6.7 列框控件(List Box) 7.6.8 组合框控件(Combo Box) 7.6.9 树视图控件(Tree Control) 7.6.10 列视图控件(List Control) 7.6.11 标签控件(Tab Control) 7.7 ActiveX控件 7.8 制作ActiveX控件 7.8.1 制作ActiveX控件的方法 7.8.2 ActiveX控件创建实例 第8章 图形图像及打印技术 8.1 图形设备接口概述 8.2 设备环境类CDC 8.2.1 设备环境简介 8.2.2 设备环境类CDC 8.2.3 设置场景类CDC的简单应用 8.3 画笔类CPen 8.4 画刷类CBrush 8.5 字体类CFont 8.6 位图类CBitmap 8.7 打印基础 8.8 如何打印格 8.8.1 打印流程 8.8.2 怎样打印格 第9章 程序调试与错误处理 9.1 概述 9.2 断点跟踪 9.3 调试窗口 9.3.1 Watch窗口 9.3.2 Call Stack窗口 9.3.3 Memory窗口 9.3.4 Variables窗口 9.3.5 Registers窗口 9.3.6 Disassembly窗口 9.4 错误处理 9.4.1 捕捉错误 9.4.2 C++中的错误处理 9.4.3 编制错误处理程序 第二篇 数据库应用篇 第10章 管理SQL Server 2000 10.1 安装SQL Server 10.2 配置服务器 10.2.1 启动、暂停和停止SQL Server服务器 10.2.2 注册SQL Server 2000服务器 10.2.3 编辑SQL Server 2000注册信息 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.6 导入、导出数据 10.6.1 导入数据库 10.6.2 导入SQL Server数据 10.6.3 导入其他数据源的数据 10.6.4 导出数据库 10.6.5 导出SQL Server数据 第11章 SQL Server 2000数据库设计与操作 11.1 关系数据库 11.1.1 数据库及关系数据库概述 11.1.2 数据库发展历史 11.1.3 关系型数据库 11.2 分析数据库 11.2.1 分析数据库结构 11.2.2 设计数据库 11.3 使用数据库 11.3.1 创建数据库 11.3.2 创建数据 11.3.3 SQL Server中的数据类型 11.3.4 向数据中添加数据 11.4 建立索引 11.4.1 建立和删除惟一索引 11.4.2 定义主键索引 11.5 关系的建立与维护 11.5.1 建立一对一关系 11.5.2 建立一对多关系 11.5.3 删除关系 11.6 使用Visual C++ 6.0与数据库连接 11.6.1 ADO简介 11.6.2 使用ADO连接数据源前的准备工作 11.6.3 Connection与Recordset 11.6.4 打开数据与关闭数据连接 11.7 如何使用ADO 11.7.1 如何打开记录集 11.7.2 怎样使用记录集 11.8 重新封装ADO 11.8.1 RxADO类的制作方法 11.8.2 RxRecordset类的制作方法 第12章 数据查询技巧 12.1 SQL简介 12.2 查询命令SELECT 12.2.1 SELECT命令简介 12.2.2 SELECT子句 12.2.3 FROM子句 12.2.4 WHERE子句 12.2.5 使用ORDER BY排序查询结果 12.2.6 聚合函数 12.2.7 GROUP BY子句 12.2.8 HAVING子句 12.2.9 复杂查询 12.3 插入命令INSERT 12.3.1 INSERT命令简介 12.3.2 简单的INSERT命令 12.3.3 在插入命令中使用SELECT 12.4 更新命令UPDATE 12.4.1 UPDATE命令简介 12.4.2 简单的UPDATE命令 12.4.3 在UPDATE更新命令中使用子查询 12.5 删除命令DELETE 12.5.1 DELETE命令简介 12.5.2 简单的DELETE命令 12.5.3 在删除中使用子查询 12.6 数据备份与数据还原 12.6.1 数据备份命令BACKUP 12.6.2 数据还原命令RESTORE 第13章 存储过程、触发器与视图 13.1 存储过程概述 13.2 存储过程的应用 13.2.1 新建存储过程 13.2.2 修改存储过程 13.2.3 删除存储过程 13.2.4 获取数据库中存储过程 13.2.5 获取指定存储过程语句 13.2.6 存储过程的调用 13.3 触发器介绍 13.4 使用触发器 13.4.1 新建触发器 13.4.2 修改触发器 13.4.3 删除触发器 13.5 视图介绍 13.6 视图应用 13.6.1 新建视图 13.6.2 修改视图 13.6.3 删除视图 13.6.4 获得数据库中所有的视图 13.6.5 获得指定视图语句 第三篇 实例开发篇 第14章 定制自己的工作环境 14.1 工具环境设置介绍 14.1.1 Editor 14.1.2 Tabs 14.1.3 Debug 14.1.4 Compatibility 14.1.5 Build 14.1.6 Directories 14.1.7 Source Control 14.1.8 Workspace 14.1.9 Macros 14.1.10 Format 14.2 定制自己的工作环境 14.3 常用快捷键 第15章 Visual C++ 6.0在资产设备管理系统中的应用 15.1 资产设备管理系统概述 15.1.1 开发背景及意义 15.1.2 系统目标 15.2 系统分析 15.2.1 系统规划 15.2.2 系统结构图 15.2.3 业务流程 15.3 数据库设计 15.3.1 数据库概念设计 15.3.2 数据库逻辑结构设计 15.4 处理过程分析 15.4.1 添加资产设备处理过程分析 15.4.2 计提折旧处理过程分析 15.5 程序框架设计 15.6 封装数据库操作 15.6.1 导入ADO动态链接库 15.6.2 封装ADO对象 15.7 菜单设计 15.8 设计状态栏 15.9 设计工具栏 15.10 主窗体设计 15.11 程序设计与编码 15.11.1 资产类别程序设计 15.11.2 添加资产设备程序设计 15.11.3 修改资产设备程序设计 15.11.4 计提折旧程序设计 15.11.5 数据备份程序设计 15.11.6 数据还原程序设计 15.12 疑难问题分析解决 15.12.1 只允许输入数字的编辑框 15.12.2 更改静态文本的字体 15.12.3 为按钮控件添加图标 15.12.4 修改窗口图标 15.12.5 遍历窗口中的控件 15.12.6 固定资产基本概念 15.12.7 固定资产计算公式 15.13 程序调试及错误处理 15.14 程序设计清单 15.15 技术、经验总结 15.15.1 技术总结 15.15.2 经验总结 15.16 系统的编译与发行 第16章 Visual C++ 6.0在物资管理系统中的应用 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 程序的打包与发行 16.6.1 组织安装信息 16.6.2 设置目标系统 16.6.3 设置安装画面 16.6.4 设置系统需求 16.6.5 安装打包程序 第17章 Visual C++ 6.0在商品采购管理系统中的应用 17.1 商品采购管理系统概述 17.1.1 开发背景 17.1.2 运行环境 17.2 系统调查 17.2.1 手工流程 17.2.2 需求分析 17.3 系统分析 17.3.1 系统功能 17.3.2 系统结构图 17.3.3 业务流程 17.4 数据库设计 17.4.1 数据库概念设计 17.4.2 数据库逻辑结构设计 17.5 数据库封装类说明 17.5.1 概述 17.5.2 设计步骤 17.5.3 程序相关代码 17.6 主窗体设计 17.6.1 菜单设计 17.6.2 设计背景画面 17.6.3 程序设计与编码 17.7 采购管理设计 17.7.1 概述 17.7.2 设计步骤 17.7.3 程序相关代码 17.8 疑难问题分析解决 17.8.1 怎样取得当前日期 17.8.2 怎样取得当前路径 17.9 程序调试及错误处理 17.10 技术、经验总结 17.10.1 技术总结 17.10.2 经验总结 第18章 Visual C++ 6.0在仓库管理系统中的应用 18.1 仓库管理系统概述 18.1.1 开发背景及意义 18.1.2 系统目标 18.2 系统分析 18.2.1 系统规划 18.2.2 系统结构图 18.2.3 业务流程 18.3 数据库设计 18.3.1 数据库概念设计 18.3.2 数据库逻辑结构设计 18.4 处理过程分析 18.4.1 商品入库处理过程分析 18.4.2 商品入库查询处理过程分析 18.5 程序框架设计 18.6 菜单设计 18.7 工具栏设计 18.8 主窗体设计 18.9 程序设计与编码 18.9.1 父窗口设计 18.9.2 商品入库程序设计 18.9.3 库存盘点程序设计 18.9.4 入库查询程序设计 18.10 疑难问题分析解决 18.10.1 利用格录入商品 18.10.2 联想录入格的实现 18.11 程序调试及错误处理 18.12 程序设计清单 18.13 技术、经验总结 18.13.1 技术总结 18.13.2 经验总结 18.14 系统的编译与发行 第19章 Visual C++ 6.0在销售管理系统中的应用 19.1 销售管理系统概述 19.1.1 开发背景及意义 19.1.2 系统目标 19.2 系统分析 19.2.1 系统规划 19.2.2 系统结构图 19.2.3 业务流程 19.3 数据库设计 19.3.1 数据库概念设计 19.3.2 数据库逻辑结构设计 19.4 处理过程分析 19.4.1 商品入库处理过程分析 19.4.2 商品销售处理过程分析 19.5 数据库封装类说明 19.5.1 概述 19.5.2 设计步骤 19.5.3 程序相关代码 19.6 主窗体设计 19.6.1 菜单设计 19.6.2 设计背景画面 19.6.3 程序相关代码 19.7 操作员管理程序设计 19.7.1 概述 19.7.2 设计步骤 19.7.3 程序相关代码 19.8 销售管理设计 19.8.1 概述 19.8.2 设计步骤 19.8.3 程序相关代码 19.9 疑难问题分析解决 19.9.1 不显示文字的密码编辑框 19.9.2 数据库参数 19.10 程序调试及错误处理 19.11 程序设计清单 19.12 技术、经验总结 19.12.1 技术总结 19.12.2 经验总结 19.13 系统的编译与发行 第20章 Visual C++ 6.0在图书管理系统中的应用 20.1 图书管理系统概述 20.1.1 开发背景及意义 20.1.2 系统目标 20.2 系统分析 20.2.1 系统规划 20.2.2 系统结构图 20.2.3 业务流程 20.3 数据库设计 20.3.1 数据库概念设计 20.3.2 数据库逻辑结构设计 20.4 处理过程分析 20.4.1 图书信息处理过程分析 20.4.2 销售查询处理过程分析 20.5 程序框架设计 20.6 主窗体设计 20.7 程序设计与编码 20.7.1 系统登录程序设计 20.7.2 操作员管理程序设计 20.7.3 图书信息管理程序设计 20.7.4 图书销售查询程序设计 20.8 疑难问题分析解决 20.8.1 在对话框中添加文档/视图架构 20.8.2 在基于对话框程序中实现打印打印预览 20.9 异常处理 20.10 程序设计清单 20.11 技术、经验总结 20.11.1 技术总结 20.11.2 经验总结 20.12 系统的编译与发行 第21章 Visual C++ 6.0在学生管理系统中的应用 21.1 学生管理系统概述 21.1.1 开发背景及意义 21.1.2 系统目标 21.2 系统分析 21.2.1 系统规划 21.2.2 系统结构图 21.2.3 业务流程 21.3 数据库设计 21.3.1 数据库概念设计 21.3.2 数据库逻辑结构设计 21.4 处理过程分析 21.4.1 科室信息添加处理过程分析 21.4.2 学生违规登记处理过程分析 21.5 主窗体设计 21.6 程序设计与编码 21.6.1 科室信息管理程序设计 21.6.2 学生成绩录入程序设计 21.6.3 学生违规处理程序设计 21.6.4 学生成绩报程序设计 21.7 疑难问题分析解决 21.7.1 导入Excel相关类 21.7.2 在程序中操作Excel 21.7.3 导入Word相关类 21.7.4 在程序中操作Word 21.8 系统测试 21.9 程序设计清单 21.10 技术、经验总结 21.10.1 技术总结 21.10.2 经验总结 21.11 系统的编译与发行
C、C++语言是IT行业的主流编程语言,也是很多程序员必备的软件基本功,是软件开发行业招聘考查的重点。本书以流行的面试题讲解为主要内容,介绍了C、C++语言基本概念,包括保留字、字符串、指针和引用、结构体、库函数等各个方面的基础知识,介绍了面向对象编程基本概念,包括如何实现继承、多态和封装等。还介绍了排序算法及数据结构的实现,包括链、堆栈、队列和树。此外,本书开始用两章篇幅详细介绍了中英文面试的注意事项、常见问题及程序员的职业规划等软件工程师的常识。最后四章详细讲解了现在流行的智力测试题。 第一篇 求职 第1章 应聘求职 1.1 企业与人才 1.1.1 企业需要什么样的人才 1.1.2 如何成为企业需要的人才 1.2 做好面试的准备 1.2.1 面试衣着 1.2.2 简历 1.3 面试 1.3.1 面试注意事项 1.3.2 面试问题分析 问题一:“请自我介绍一下。” 问题二:“谈谈你的家庭情况。” 问题三:“你有什么业余爱好?” 问题四:“你最崇拜谁?” 问题五:“谈谈你的缺点。” 问题六:“谈一谈你的一次失败经历。” 问题七:“你为什么选择我们公司?” 问题八:“对这项工作,你可预见到哪些困难?” 问题九:“如果我们录用你,你将怎样开展工作?” 问题十:“与上级意见不一致,你将怎么办?” 问题十一:“我们为什么要录用你?” 问题十二:“你能为我们做什么?” 问题十三:“你是应届毕业生,缺乏经验,如何能胜任这项工作?” 问题十四:“你希望与什么样的上级共事?” 问题十五:“你在前一家公司的离职原因是什么?” 1.4 为明天做好计划 第2章 英文面试 2.1 英文电话面试 2.1.1 英文电话面试注意事项 2.1.2 英文电话面试常见   问题 问题一:When will you graduate? 问题二:How do you normally handle criticism? 问题三:Why should we hire you? 问题四:Please tell me something unreflected at your resume/about yourself/ your experience/your activities. 2.1.3 英文电话面试常用词汇 2.2 英文面试 2.2.1 英文简历 2.2.2 英文面试流程 2.2.3 英文面试注意事项 2.2.4 英文面试常见问题 问题一:What is your strongest trait? 问题二:How would your friends or colleagues describe you? 问题三:What personality traits do you admire? 问题四:What leadership qualities did you develop as an administrative personnel? 问题五:How do you normally handle criticism? 问题六:What do you find frustrating in a work situation? 问题七:How do you handle your failure? 问题八:What kinds of people do you like to work with? 2.2.5 英文面试常用词汇 2.3 计算机专业英语面试常用词汇 第二篇 C/C++面试题 第3章 C/C++程序基础 3.1 基本概念 面试题1:什么是C语言语句 面试题2:变量的声明和定义有什么区别 面试题3:下列字符中,哪些不是C语言关键字 面试题4:下列变量定义中,哪些是合法的 面试题5:如何以最简单的方式让电脑蜂鸣器发出声音 3.2 编程规范 面试题6:谈谈你对编程规范的理解或认识 面试题7:函数、变量等命名都有哪些规则 面试题8:写出bool、int、float、指针变量与“零值”比较的if语句 3.3 数据类型 面试题9:写出代码的输出结果 面试题10:C语言中不合法的整型常数 面试题11:short i = 0; i = i + 1L;这两句有错吗 面试题12:char x[] = {"abcd"}和 char y[] = {'a','b','c','d'} 有不同吗 面试题13:char型数据在内存中的存储形式 3.4 运算符 面试题14:请写出下列代码的输出内容 面试题15:运算符的优先级问题 面试题16:&&和&,||和|有什么区别 面试题17:什么是左值,什么是右值 面试题18:请写出程序的运行结果 面试题19:sizeof和strlen的区别 3.5 结构体 面试题20:结构体是什么样的数据类型 面试题21:结构体可以直接赋值吗 面试题22:组织WAV文件头,并解析WAV格式的各项信息 面试题23:计算学生不及格的人数打印他们的性别、姓名和成绩 面试题24:结构体内存对齐问题 3.6 C和C++的区别 面试题25:关键字static在C和C++中的区别 面试题26:C语言的结构体和C++的有什么区别 面试题27:C中的malloc和C++中的new有什么区别 面试题28:C++的引用和C语言的指针有什么区别 第4章 预处理、保留字 4.1 预处理 面试题1:简述#ifdef、#else、#endif和#ifndef的作用 面试题2:宏定义和函数 面试题3:用#define声明一个常数 面试题4:写一个“标准”宏MIN 面试题5:typedef和define有什么区别 面试题6:#define CHAR char*和typedef char* CHAR各有什么优劣 面试题7:谈谈你对typedef的认识 4.2 const(常量) 面试题8:关键字const是什么 面试题9:说明以下a声明的含义 面试题10:const、define定义常量的区别 4.3 static(静态)和extern 面试题11:static有什么作用 面试题12:extern有什么作用 面试题13:简述变量存储类型 4.4 volatile 面试题14:volatile有什么作用 面试题15:一个参数可以既是const又是volatile吗 面试题16:一个指针可以是volatile吗 第5章 引用和指针 5.1 引用 面试题1:什么是引用 面试题2:常引用有什么作用 面试题3:流操作符重载为什么返回引用 5.2 指针 面试题4:说明以下声明的含义 面试题5:简述指针常量与常量指针区别 面试题6:写出以下代码的输出结果 面试题7:找出代码的错误 5.3 指针和数组 面试题8:写出代码的输出结果 面试题9:请问这段程序有问题吗 面试题10:a和&a有什么区别 面试题11:请问代码有什么问题 面试题12:数组名和指针的区别 5.4 函数指针 面试题13:请解析(*(void (*)())0)()的含义 面试题14:指出程序的错误 5.5 “野指针” 面试题15:如何避免“野指针” 面试题16:程序是否正确 面试题17:指出程序的错误 5.6 动态内存 面试题18:简述C、C++程序编译的内存分配情况 面试题19:以下四段代码中哪段没有错误 第6章 字符串 6.1 数字字符串 面试题1:编码实现数字转化为字符串 面试题2:编码实现字符串转化为数字 6.2 字符串函数 面试题3:编写一个标准strcpy函数 面试题4:简述strcpy、sprintf与memcpy的区别 6.3 字符串与数组 面试题5:找出程序的错误之处 面试题6:判断程序会出现什么问题 第7章 嵌入式编程 面试题1:编码实现某一变量某位清或置 面试题2:用C编写一个死循环程序 面试题3:用变量a给出下面的定义 面试题4:设置地址为0x67a9的整型变量的值为0xaa66 面试题5:评论下面这个中断函数 面试题6:评价一个代码片段 第8章 面向对象 8.1 面向对象的基本概念 面试题1:谈谈你对面向对象的认识 面试题2:面向对象的三大特征 面试题3:面向过程和面向对象有什么区别 8.2 类的成员变量和成员函数 面试题4:简述类public、protected、private的作用 面试题5:写出代码的打印结果 面试题6:写出程序的打印结果 面试题7:C++的空类有哪些成员函数 8.3 构造函数和析构函数 面试题8:构造函数能否为函数 面试题9:简述子类与父类的析构、构造函数的调用顺序 面试题10:编写类String 的构造函数、析构函数和赋值函数 8.4 拷贝构造函数 面试题11:谈谈对拷贝构造函数和赋值运算符的认识 面试题12:写出当定义#define _INMAIN 0和不定义时代码打印结果 第9章 继承与多态 9.1 继承 面试题1:指出程序的错误 面试题2:用C++设计一个不能被继承的类 9.2 函数和纯函数 面试题3:下面说法中正确的是哪个 面试题4:写出程序的打印结果 面试题5:访问基类的私有函数 9.3 多态 面试题6:简述类成员函数的重写、重载和隐藏的区别 面试题7:简述多态实现的原理 第10章 数据结构 10.1 链 面试题1:链和数组有什么区别 面试题2:寻找单链中间结点 面试题3:怎样把一个单链反序 10.2 单循环链 面试题4:根据需求建立一个单向循环链 面试题5:检测一个较大的单向链是否带环 10.3 双向链 面试题6:按要求构造一个双向链 面试题7:编程实现双链插入新结点 面试题8:编程实现双链删除指定结点 10.4 栈和队列 面试题9:简述队列和栈的异同 面试题10:建立一个链式栈 面试题11:建立一个链式队列 面试题12:能否用两个栈实现一个队列的功能 10.5 二叉树 面试题13:建立一个二叉树 面试题14:计算一棵二叉树的深度 面试题15:在二元树中找出和为某一值的所有路径 第11章 排序 11.1 插入排序 面试题1:编码实现直接插入排序 面试题2:编码实现希尔(Shell)排序 11.2 交换排序 面试题3:编码实现冒泡排序 面试题4:编码实现快速排序 11.3 选择排序 面试题5:编码实现直接选择排序 面试题6:编程实现堆排序 11.4 基数排序 面试题7:编程实现基数排序 第三篇 智力测试 第12章 基本方法 面试题1:斯密斯夫妇握手问题 面试题2:5个强盗分100颗宝石 面试题3:分牛 面试题4:谁在说谎 面试题5:是亏了还是赚了 面试题6:小虫分裂问题 面试题7:飞机绕地球环行问题 第13章 数学能力 面试题1:用一笔画出经过9个点的4条直线 面试题2:在9个点上画10条线 面试题3:100盏灯 面试题4:找出不同的球 面试题5:时针、分针和秒针重合问题 面试题6:可以喝多少瓶汽水 面试题7:怎样拿到第100号球 面试题8:烧绳计时 面试题9:分金条 面试题10:至少有多少人及格 面试题11:如何取3升水 面试题12:将16升水平均分给四个人 面试题13:如何将140克的盐分成50、90克各一份 面试题14:蜗牛几天能爬到井口 面试题15:100美元的差额到哪里去了 面试题16:点击鼠标比赛 面试题17:小猴最多能运回多少根香蕉 面试题18:算出小张买了几瓶啤酒、几瓶饮料 面试题19:牧场有多少匹马 面试题20:找出不同的苹果 面试题21:如何穿越沙漠 第14章 推理能力 面试题1:怎么少了100元 面试题2:村里有多少条病狗 面试题3:他们都在做什么 面试题4:躯体与灵魂 面试题5:小明一家能否安全过桥 面试题6:过河   问题 面试题7:这是张什么牌 面试题8:说谎岛上的两个部落 面试题9:谁是特尔斐城的预言家 面试题10:哪个政党获胜 面试题11:每个护士星期几休息 面试题12:每个人系的圆牌都是什么颜色的 面试题13:帽子问题 面试题14:谁是凶手 面试题15:他们的头发是什么颜色的 面试题16:谁是漂亮的青年 面试题17:哪个袋子里有金子 面试题18:他们星期几在说谎 面试题19:剩下的是什么牌 面试题20:老李的儿子们是做什么的 面试题21:史密斯家的门牌号 面试题22:尤克利地区的电话 面试题23:乡村庙会的15点游戏 面试题24:各家的孩子得了第几名 面试题25:经理应该带谁出差 面试题26:法官的判决 面试题27:张老师的生日是哪一天 面试题28:谁是M小姐的情人 面试题29:他们分别是哪国人 面试题30:他们分别是做什么的 面试题31:他们都会说什么语言 面试题32:怎么把马匹从甲村拉到乙村 面试题33:谁打碎了花瓶 面试题34:分机票 面试题35:石头有多重 面试题36:该释放谁 面试题37:谁打碎的玻璃 面试题38:谁是最优秀的医生 面试题39:今天星期几 面试题40:五个人进行汽车竞赛 面试题41:下一行是什么 面试题42:三筐水果各是什么 面试题43:最后剩下的是谁 第15章 反应能力 面试题1:下水道的井盖 面试题2:30秒答题 面试题3:一分钟答题 面试题4:镜子中的你 面试题5:埃及古币 面试题6:投硬币 面试题7:他在撒谎吗 面试题8:制造零件 面试题9:不喜欢正方形窗户的人 面试题10:孩子租房 面试题11:重男轻女的国度 面试题12:分遗产 面试题13:栽果树 面试题14:聪明的农民 面试题15:聪明的死刑犯 面试题16:幼儿园中奇怪的人 面试题17:奇怪的城镇 面试题18:聪明的商人 面试题19:渡船过河 面试题20:愚蠢的长工 面试题21:红球和白球 面试题22:小明坐在了哪里 面试题23:乌龟赛跑 面试题24:老师的爱恋 面试题25:爬楼梯 面试题26:马丁先生的约会 面试题27:巧入房间 面试题28:管子中的球 面试题29:女儿的错
第1章 计算机与C++编程简介 1.1 简介 1.2 什么是计算机 1.3 计算机组成 1.4 操作系统的变革 I.5 个人计算、分布式计算与客户/a匠务器计算 l. 6 机器语言、汇编语言和高级语言 1.7 C语言与C++的历史 1.8 C++标准库 1.9 Java、Internet与万维网 1.10 其他高级语言 1.11 结构化编程 1.12 典型C++环境基础 1.13 C++与本书的一般说明 1.14 C++编程简介 1.15 简单程序:打印一行文本 1.16 简单程序:两个整数相加 1.17 内存的概念 1.18 算术运算 1.19 判断:相等与关系运算符 1.20 新型头文件与名字空间 1.21 有关对象的思考 小结 术语 自测练习 自测练习答案 练习 第2章 控制结构 2.1 简介 2.2 算法 2.3 伪代码 2.4 控制结构 2.5 if选择结构 2.6 if/e1se选择结构 2.7 while重复结构 2.8 构造算法:实例研究1(计数器控制重复) 2.9 构造算法与自上而下逐步完善:实例研究2(标记控制重复) 2.10 构造算法与自上而下逐步完善:实例研究3(嵌套控制结构) 2.11 赋值运算符 2.12 自增和自减运算符 2.13 计数器控制循环的要点 2.14 for重复结构 2.15 for结构使用举例 2.16 switch多项选择结构 2.17 do/while重复结构 2.18 break和continue语句 2.19 逻辑运算符 2.20 混淆相等(.==)与赋值(=)运算符 2.21 结构化编程小结 2.22 有关对象的思考:确定问题中的对象 小结 术语 自测练习 自测练习答案 练习 第3章 函数 3.1 简介 3.2 C++程序组件 3.3 数学函数库 3.4 函数 3.5 函数定义 3.6 函数原型 3.7 头文件 3.8 随机数产生器 3.9 案例:机会游戏与enum简介 3.10 存储类 3.11 作用域规则 3.12 递归 3.13 使用递归举例:Fibonacci数列 3.14 递归与迭代 3.15 带空参数函数 3.16 内联函数 3.17 引用与引用参数 3.18 默认参数 3.19 一元作用域运算符 3.20 函数重载 3.21 函数模板 3.22 有关对象的思考:确定对象属性 小结 术语 自测练习 自测练习答案 练习 第4章 数组 4.1 简介 4.2 数组 4.3 声明数组 4.4 使用数组的举例 4.5 将数组传递给函数 4.6 排序数组 4.7 实例研究:用数组计算平均值、中数和模 4.8 查找数组:线性查找与折半查找 4.9 多下标数组 4.10 有关对象的思考:确定类的行为 小结 术语 自测练习 自测练习答案 练习 递归练习 第5章 指针与字符串 5.1 简介 5.2 指针变量的声明与初始化 5.3 指针运算符 5.4 按引用调用函数 5.5 指针与常量限定符 5.6 按引用调用的冒泡排序 5.7 指针达式与指针算法 5.8 指针与数组的关系 5.9 指针数组 5.10 实例研究:洗牌与发牌 5.11 函数指针 5.12 字符与字符串处理简介 5.12.1 字符与字符串基础 5.12.2 字符串处理库的字符串操作函数 5.13 有关对象的思考:对象间的交互 小结 术语 自测练习 自测练习答案 练习 特殊小节:建立自己的计算机 更多的指针练习 字符串操作练习 特殊小节:高级字符串操作练习 复杂字符串操作练习 第6章 类与数据抽象(一) 6.1 简介 6.2 结构定义 6.3 访问结构成员 6.4 用struct实现用户自定义类型Time 6.5 用类实现Time抽象数据类型 6.6 类范围与访问类成员 6.7 接口与实现方法的分离 6.8 控制对成员的访问 6.9 访问函数与工具函数 6.10 初始化类对象:构造函数 6.11 在构造函数中使用默认参数 6.12 使用析构函数 6.13 何时调用构造函数与析构函数 6.14 使用数据成员和成员函数 6.15 微妙的陷阱:返回对Private数据成员的引用 6.16 通过默认的成员复制进行赋值 6.17 软件复用性 6.18 有关对象的思考:编写电梯模拟程序的类 小结 术语 自测练习 自测练习答案 练习 第7章 类与数据抽象(二) 7. 1 简介 7.2 const(常量)对象与const成员函数 7.3 复合:把对象作为类成员 7.4 友元函数与友元类 7.5 使用this指针 7.6 动态内存分配与new和delete运算符 7.7 static类成员 7.8 数据抽象与信息隐藏 7.8.1 范例:数组抽象数据类型 7.8.2 范例:字符串抽象数据类型 7.8.3 范例:队列抽象数据类型 7.9 容器类与迭代 7.10 代理类 7.11 有关对象的思考:在电梯模拟程序中使用复合和动态对象管理 小结 术语 自测练习 自测练习答案 练习 第8章 运算符重载 8.1 简介 8.2 运算符重载的基础 8.3 运算符重载的限制 8.4 用作类成员与友元函数的运算符函数 8.5 重载流插入与流读取运算符 8.6 重载一元运算符 8.7 重载二元运算符 8.8 实例研究:Array类 8.9 类型之间的转换 8.10 实例研究:String类 8.11 重载十十与—— 8.12 实例研究:Date类 小结 术语 自测练习 自测练习答案 练习 第9章 继承 9.1 简介 9.2 继承:基类和派生类 9.3 Protected成员 9.4 把基类指针强制转换为派生类指针 9.5 使用成员函数 9.6 在派生类中重定义基类成员 9.7 Public、Protected和Private继承 9.8 直接基类和间接基类 9.9 在派生类中使用构造函数和析构函数 9.10 将派生类对象隐式转换为基类对象 9.11 关于继承的软件工程 9.12 复合与继承的比较 9.13 对象的“使用”关系和“知道”关系 9.14 实例研究:类Point、CircIe和Cylinder 9.15 多重继承 小结 术语 自测练习 自测练习答案 练习 第10章 函数和多态性 10.1 简介 10.2 类型域和switch语句 10.3 函数 10.4 抽象基类和具体类 10.5 多态性 10.6 实例研究:利用多态性的工资单系统 10.7 新类和动态关联 10.8 析构函数 10.9 实例研究:继承接口和实现 10.10 多态、函数和动态关联 小结 术语 自测练习 自测练习答案 练习 第11章 C++输入/输出流 11.1 简介 11.2 流 11.2.1 iosbeam类库的头文件 11.2.2 输入/输出流类和对象 11.3 输出流 11.3.1 流插入运算符 11.3. 2 连续使用流插入/流读取运算符 11.3.3 输出char类型的变量 11.3.4 用成员函数put输出字符和put函数的连续调用 11.4 输入流 11.4.1 流读取运算符 11.4.2 成员函数get和getline 11.4.3 istream类中的其他成员函数(Peek、Putback和ignore) 11.4.4 类型安全的I/0 11.5 成员函数read、gcount和write的无格式输人/输出 11.6 流操纵算子 11.6.1 整数流的基数:流操纵算子dec、oct、hex和setbase 11.6.2 设置浮点数精度(Precision、setprecision) 11.6.3 设置域宽(setw、width) 11.6.4 用户自定义的流操纵算子 11.7 流格式状态 11.7.1 格式状态标志 11.7.2 尾数零和十进制小数点(ios:showpoint) 11.7.3 对齐(ios::left、ios::right、ios::internal) 11.7.4 设置填充字符(fill、setfill) 11.7.5 整数流的基数:(ios::dec、ios::oct、ios::hex、ios::showbase) 11. 7.6 浮点数和科学记数法(ios::scientific、ios::fixed) 11.7.7 大/小写控制(ios:uppercase) 11.7.8 设置及清除格式标志(flags、setiosflags、resetiosflags) 11.8 流错误状态 11.9 把输出流连到输入流上 小结 术语 自测练习 自测练习答案 练习 第12章 模板 12.1 简介 12.2 函数模板 12.3 重载模板函数 12.4 类模板 12.5 类模板与非类型参数 12.6 模板与继承 12.7 模板与友元 12.8 模板与static成员 小结 术语 自测练习 自测练习答案 练习 第13章 异常处理 13.1 简介 13.2 何时使用异常处理 13.3 其他错误处理方法 13.4 C十十异常处理基础:try、throw、catch 13.5 简单异常处理例子:除数为o 13.6 抛出异常 13.7 捕获异常 13.8 再抛出异常 13.9 异常指定 13.10 处理意外异常 13.11 堆栈解退 13.12 构造函数、析构函数与异常处理 13.13 异常与继承 13.14 处理new故障 13.15 auto_ptr类与动态内存分配 13.16 标准库异常层次 小结 术语 自测练习 自测练习答案 练习 第14章 文件处理 14.1 简介 14.2 数据的层次 14.3 文件和流 14.4 建立顺序访问文件 14.5 读取顺序访问文件中的数据 14.6 更新顺序访问文件 14.7 随机访问文件 14.8 建立随机访问文件 14.9 向随机访问文件中随机地写入数据 14.10 从随机访问文件中顺序地读取数据 14.11 实例研究:事务处理程序 14.12 对象的输入/输出 小结 术语 自测练习 自测练习答案 练习 第15章 数据结构 15.1 简介 15.2 自引用类 15.3 动态内存分配 15.4 链 15.5 堆栈 15.6 队列 15.7 树 小结 术语 自测练习 自测练习答案 练习 特殊小节:建立自己的编译器 第16章 位、字符、字符串和结构 16.1 简介 16.2 结构的定义 16.3 结构的初始化 16.4 函数结构 16.5 类型定义:typedef 16. 6 范例:高效的洗牌和发牌模拟程序 16.7 位运算符 16.8 位段 16.9 字符处理库 16.10 字符串转换函数 16.11 字符串处理库中的查找函数 16.12 字符串处理库中的内存函数 16.13 字符串处理库中的其他函数 小结 术语 自测练习 自测练习答案 练习 第17章 预处理器 17.1 简介 17.2 预处理指令#include 17.3 预处理指令#define:符号常量 17.4 预处理指令#define:宏 17.5 条件编译 17.6 预处理指令#error和#pragma 17.7 运算符#和## 17.8 行号 17.9 预定义的符号常量 17.10 断言(宏assert) 小结 术语 自测练习 自测练习答案 练习 第18章 C语言遗留代码问题 18.1 简介 18.2 UNIX和DOS系统中的输入/输出重定向 18.3 变长参数 18.4 使用命令行参数 18.5 对编译多个源文件程序的说明 18. 6 用edt和atexit终止程序的执行 18.7 volatile类型限定符 18.8 整数和浮点数常量的后缀 18.9 信号处理 18.10 动态内存分配:函数calloc和realloc 18.11 无条件转移:goto语句 18.12 联合体 18.13 连接指定 小结 术语 自测练习 自测练习答案 练习 第19章 string类与字符串流处理 19.1 简介 19.2 string的赋值与连接 19.3 比较string 19.4 子串 19.5 交换string 19.6 string的特性 19.7 寻找string中的字符 19.8 替换string中的字符 19.9 在string中插入字符 19.10 转换成C语言式char 字符串 19.11 迭代器 19.12 字符串流处理 小结 术语 自测练习 自测练习答案 练习 第20章 标准模板库(STL) 20.1 标准模板库(STL)简介 20.1.1 容器简介 20.1.2 迭代器简介 20.1.3 算法简介 20.2 顺序容器 20.2.1 vector顺序容器 20.2.2 1ist顺序容器 20.2.3 deque顺序容器 20.3 关联容器 20.3.1 multiset关联容器 20. 3.2 set关联容器 20.3.3 mdtimap关联容器 20.3.4 map关联容器 20.4 容器适配器 20.4.1 stack适配器 20.4.2 queue适配器 20.4.3 Priority_queue适配器 20.5 算法 20.5.1 fill、fill_n、generate与generate_n 20.5.2 equal、mismatch和1exicographical_compare 20.5.3 remove、remove_if、 remove_copy和remove_copy_if 20.5.4 replace、replace_if、replace_copy和replace_copy_if 20.5.5 数学算法 20.5.6 基本查找与排序算法 20.5.7 swap、iter_swap和swap_ranges 20.5.8 copy—backward、 merge、 unique和reverse 20.5.9 inplace_merge、 unique—copy和reverse—copy 20.5.10 集合操作 20.5.11 1ower—bound、 upper—bound和equal_range 20.5.12 堆排序 20.5.13 min和max 20.5.14 本章未介绍的算法 20.6 bitset类 20.7 函数对象 小结 术语 自测练习 自测练习答案 练习 Internet和World Wide Web中的STL资源 STL文献 第21章 ANSI/ISO C++标准语言补充 21.1 简介 21.2 bool数据类型 21.3 static—cast运算符 21.4 const—cast运算符 21.5 reinterpret—cast运算符 21.6 名字空间 21.7 运行时类型信息(RTTI) 21.8 运算符关键字 21.9 explicit构造函数 21.10 mutable类成员 21.11 类成员指针(.和—>) 21.12 多重继承与virtual基类 21.13 结束语 小结 术语 自测练习 自测练习答案 练习 附录A 运算符的优先级与结台律 附录B ASCII字符集 附录C 数值系统 附录D 有关C++的Internet与Web资源 参考文献 【媒体评论】

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值