第1章 C++.NET面向对象程序设计概述 1
1.1 程序设计语言的发展 1
1.2 面向过程的程序设计 2
1.3 面向对象的程序设计 4
1.4 面向对象的程序设计语言 5
1.4.1 类与对象 5
1.4.2 数据抽象与封装 6
1.4.3 继承性 8
1.4.4 多态性 9
1.5 C++与面向对象程序设计 9
1.6 Microsoft.NET与Visual C++ 12
1.6.1 .NET Framework 13
1.6.2 Visual C++.NET 15
1.7 第一个C++程序:Hellow C++ 16
1.7.1 Visual C++ 2008简介 16
1.7.2 建立Hellow C++程序的解决方案 16
1.7.3 在Hellow C++项目中添加源程序 20
习题 22
第2章 数据输入与输出 23
2.1 C++程序的结构 23
2.2 流与标准输入输出设备 25
2.3 cin和数据输入 26
2.3.1 常规数据的输入 26
2.3.2 空格及包括空白的长字符串的输入 28
2.4 cout和数据输出 30
2.5 输出格式控制符 32
2.6 文件数据输入与输出 35
习题 38
第3章 C++基础 40
3.1 C++对C语言数据类型的扩展 40
3.2 局部变量声明 41
3.3 const常量 41
3.4 命名空间 43
3.5 指针 47
3.5.1 指针概念的回顾 47
3.5.2 指针与0 48
3.5.3 指针与const 48
3.5.4 void指针 50
3.5.5 new和delete 51
3.6 引用 53
3.7 类型转换 56
3.7.1 隐式类型转换 57
3.7.2 显式类型转换 58
3.8 函数 59
3.8.1 函数原型 59
3.8.2 函数默认参数 61
3.8.3 引用参数 62
3.8.4 返回引用 64
3.8.5 函数与const 65
3.8.6 函数重载 66
3.9 内联函数 69
3.10 预处理器 69
3.11 作用域和生存期 72
3.11.1 作用域 72
3.11.2 变量类型及生存期 75
3.11.3 变量初始化 76
3.11.4 局部变量与函数返回地址 77
习题 78
第4章 类与对象 80
4.1 结构与类 80
4.1.1 C++对结构的扩展 80
4.1.2 访问权限 81
4.1.3 类 82
4.2 成员函数 84
4.2.1 成员函数的定义 84
4.2.2 常量成员函数 85
4.3 类与封装 86
4.4 对象 88
4.5 构造函数与析构函数 90
4.5.1 构造函数 90
4.5.2 析构函数 93
4.5.3 默认构造函数 95
4.5.4 重载构造函数 98
4.5.5 复制构造函数 99
4.5.6 构造函数与对象定义 103
4.6 构造函数与成员初始化列表 103
4.7 静态成员 106
4.7.1 静态数据成员 106
4.7.2 静态成员函数 108
4.8 this指针 110
4.9 友元 114
4.10 对象成员 117
4.11 对象数组和对象指针 120
4.12 向函数传递对象 121
4.13 类的作用域和对象的生存期 123
4.14 类的接口与实现的分离 125
4.14.1 头文件 125
4.14.2 源文件 126
4.14.3 类的应用 127
习题 129
第5章 继承 133
5.1 继承的概念 133
5.2 继承方式 134
5.2.1 C++继承的形式 134
5.2.2 公有继承 135
5.2.3 私有继承 136
5.2.4 保护继承 137
5.3 基类与派生类的关系 139
5.3.1 成员函数的重定义与名字隐藏 139
5.3.2 访问基类成员 140
5.4 构造函数和析构函数 142
5.4.1 派生类构造函数的定义 142
5.4.2 派生类构造函数和析构函数的调用次序 143
5.4.3 构造函数和析构函数的构造规则 144
5.5 多继承 149
5.5.1 多继承的概念和应用 149
5.5.2 多继承方式下的二义性 151
5.5.3 多继承的构造函数与析构函数 151
5.6 虚拟继承 153
5.6.1 虚拟继承引入的原因 153
5.6.2 虚拟继承的实现 154
5.7 基类与派生类对象的关系 159
5.8 继承与组合 161
习题 166
第6章 多态性 169
6.1 多态与联编 169
6.2 函数重载 170
6.3 运算符重载 171
6.3.1 运算符重载的概念 171
6.3.2 运算符重载的限制 172
6.3.3 类外的运算符重载 173
6.4 类运算符的重载 173
6.4.1 类成员运算符重载 174
6.4.2 类的友元运算符函数重载 178
6.5 特殊运算符重载 182
6.5.1 重载运算符++和-- 182
6.5.2 重载赋值运算符= 184
6.5.3 重载[] 187
6.5.4 类型转换 189
6.6 输入输出运算符重载 191
6.6.1 重载输出运算符 191
6.6.2 重载输入运算符 191
6.6.3 运算符〈〈和〉〉的重载应用 192
6.7 虚函数 193
6.7.1 虚函数的意义 193
6.7.2 虚函数的特性 195
6.7.3 虚析构函数 199
6.8 虚函数的实现技术 201
6.9 纯虚函数与抽象类 203
6.10 运行时类型信息 204
6.10.1 dynamic_cast 205
6.10.2 typeid 206
6.11 多态应用举例 208
习题 215
第7章 模板与STL 218
7.1 模板概念 218
7.2 函数模板 219
7.2.1 函数模板的定义 219
7.2.2 函数模板的实例化 221
7.2.3 模板参数 222
7.3 类模板 225
7.3.1 类模板的概念 225
7.3.2 类模板的定义 225
7.3.3 类模板的实例化 229
7.3.4 类模板的使用 231
7.4 STL 233
7.4.1 容器 234
7.4.2 迭代器 243
7.4.3 关联式容器 244
7.4.4 算法 249
习题 251
第8章 异常 253
8.1 异常处理概述 253
8.2 异常处理基础 254
8.2.1 异常处理的结构 254
8.2.2 异常捕获 256
8.3 异常与函数 257
8.3.1 在函数中处理异常 257
8.3.2 在函数调用中完成异常处理 258
8.4 异常处理的几种特殊情况 259
8.5 异常和类 261
8.5.1 构造函数与异常 261
8.5.2 异常类 263
8.5.3 异常类继承 267
习题 269
第9章 托管C++程序设计 271
9.1 CLR与托管程序 271
9.2 .NET托管数据类型 274
9.2.1 值类型 275
9.2.2 引用类型 276
9.2.3 值类型与引用类型的转换:装箱与拆箱 277
9.2.4 MC++引用类型与托管堆 278
9.3 .NET程序集与命名空间 279
9.3.1 .NET程序集 279
9.3.2 .NET命名空间 280
9.4 简单的MC++程序设计 281
9.4.1 第一个托管程序:Hellow MC++! 281
9.4.2 MC++的数据类型 283
9.4.3 基于控制台程序的数据输入与输出 285
9.4.4 托管与非托管代码的混合编程 289
9.5 托管类与托管结构 291
9.5.1 值类型的结构与类 291
9.5.2 引用类型的结构与类 293
9.5.3 结构与类的属性 294
9.5.4 运算符重载和静态构造函数 296
9.6 托管继承 298
9.6.1 托管继承与标准C++继承的区别 298
9.6.2 虚函数与抽象类 300
9.6.3 sealed类和sealed方法 302
9.6.4 接口类 303
9.7 托管数组 305
9.7.1 一维托管数组 306
9.7.2 二维托管数组 309
9.8 委托与事件 311
9.8.1 委托 311
9.8.2 事件 315
习题 317
第10章 Windows窗体程序设计 320
10.1 Windows程序设计基础 320
10.1.1 窗口 320
10.1.2 消息 321
10.1.3 消息循环 322
10.1.4 Windows程序的构成 323
10.1.5 Windows程序结构 324
10.1.6 Windows程序的控制流程分析 326
10.2 MFC和窗体程序设计概述 329
10.2.1 MFC程序设计 330
10.2.2 窗体概述 330
10.2.3 MFC和窗体程序设计的比较 331
10.3 Windows窗体程序设计 332
10.3.1 窗体坐标 332
10.3.2 窗体程序的手工设计过程 333
10.4 Application类和Form类 338
10.4.1 Application类 338
10.4.2 Form类 339
10.5 窗体设计器 341
10.5.1 窗体设计器概述 341
10.5.2 用窗体设计器创建窗体 341
10.6 事件次序和输入焦点 351
10.7 模式窗体和无模式窗体 351
习题 353
第11章 窗体常用控件编程 354
11.1 .NET控件基础 354
11.2 标签控件、文本操作控件和命令按钮 357
11.2.1 标签控件 357
11.2.2 文本操作控件 357
11.2.3 Button控件 359
11.3 单选按钮和复选框 363
11.4 容器控件 370
11.5 列表框和组合框 376
11.6 通用对话框 382
11.7 菜单和工具条 388
11.7.1 主菜单 388
11.7.2 快捷菜单 391
11.7.3 工具栏 393
11.8 多文档界面应用程序 396
11.9 没有介绍的窗体控件 400
习题 400
第12章 .NET文件操作 402
12.1 文件类型与System∷IO命名空间 402
12.2 磁盘驱动器与路径 403
12.3 目录与文件管理 405
12.3.1 目录管理类 405
12.3.2 磁盘文件管理类 408
12.4 读写文件 410
12.4.1 流 410
12.4.2 文本文件 412
12.4.3 二进制文件 423
习题 431
参考文献 433