
本书详细讲解了在Windows环境下使用Visual Studio .NET进行C++程序设计,并在此基础上结合MFC类库进行Windows程序设计的基本知识,内容涵盖了C++基础,数据类型、运算符和表达式,控制结构,函数和预处理命令,数组、字符串和指针,类与对象,继承、重载和多态性,I/O系统和文件,模版、异常处理和命名空间,创建MFC Windows应用程序,应用程序界面设计,以及数据库和网络程序设计。本书是C++语言和MFC程序设计的入门书籍,适合作为高等院校计算机与信息技术相关专业的教材,也可作为C++语言的自学和培训教材。
前 言
C语言在面向过程的程序设计时代有着辉煌的历史,而作为继承并发扬了C语言优势的C++语言,在面向对象的程序设计时代仍保持了它不可动摇的地位,依然是当今应用软件开发中最受欢迎的程序设计语言。
学习和掌握C++语言不仅是软件工程师必须做到的事情,也是很多软件爱好者的愿望。但是要学会C++语言却不是一件容易的事情,很多人在多次尝试之后放弃了,原因就是面向对象的程序设计方法和以前大家熟悉的面向过程程序设计方法完全不同。习惯了使用面向过程语言的人在程序设计过程中往往摆脱不掉老思想的束缚,只会用C++写出面向过程风格的程序来,并没有掌握面向对象程序设计的精髓。
因此,本书针对这个问题,力图从初学者的角度讲解C++语言,理解面向对象程序设计的概念。书中所使用的例子对初学者而言是十分容易接受的,并且例子的代码短小精悍,让读者可以容易地在机器上实践。
现在C++语言的程序设计环境很多,本书选择使用Visual Studio .NET作为语言环境,它是Microsoft公司推出的可视化开发工具包Visual Studio .NET中的一个重要组成部分,并可以使用MFC方便地让自己的应用程序拥有美观的Windows界面。
本书内容
本书分为两个部分。
第一部分主要讲解使用C++进行程序设计的方法,所有的例子都是控制台应用程序。这部分的内容从第1章到第9章,在介绍了C++基本知识之后,介绍C++的数据类型,运算符和表达式的使用,控制结构,函数和预处理命令,数组、字符串和指针的使用。对C语言很熟悉的读者应该会很快地熟悉这部分内容,但是也应该仔细了解,因为C++在C的基础之上对相关的内容有了一定的改进,例如在函数的参数传递中就可以使用引用传递。然后介绍了类与对象,继承、重载和多态性,I/O系统和文件,模版,异常处理和命名空间。对于以前长时间进行面向过程程序设计的读者来说,从类和对象的概念开始就会在理解上有一定的困难,因此从这里开始是本书的难点。
第二部分则主要讲解使用Visual Studio .NET提供的MFC进行Windows界面的应用程序设计。所谓MFC就是指Microsoft 基础类(Microsoft Foundation Class)。这个类是用于在 Microsoft Windows 中进行程序设计的应用程序框架。MFC的所有代码都用 C++ 编写,并提供了许多代码以方便程序设计人员完成各种任务。程序设计人员只须将自己要创立的应用程序的相关代码添加到这个框架中就可以完成这些功能。这部分内容包括创建MFC Windows应用程序,应用程序界面设计以及数据库和网络程序设计。在创建MFC Windows应用程序一章中,通过编写一个类似写字版的MDI应用程序来了解MFC的文档/视图结构;在应用程序界面设计一章中则讲解了如何使用各种控件编写出美观的程序界面;而数据库和网络程序设计一章则讲解了如何在程序中增加数据库访问功能和网络访问功能。
本书适用读者
本书是C++语言和MFC程序设计的入门书籍,适合作为高等院校计算机与信息技术相关专业的教材,也可作为C++语言的自学和培训教材。
使用本书的要求
如果想要运行本书中的所有例子,那么需要建立下面的环境:
(1) Windows 2000/XP操作系统,并安装最新的补丁程序。
(2) 安装Visual Studio .NET程序设计环境。
本书由金雪云编写。在本书的编写过程中,笔者受到来自各方面人士的帮助和支持,在这里表示衷心的感谢。
由于时间仓促,本书难免会有不足之处,敬请各位读者批评指正。
作 者
? II ?
Visual C++教程
? XI ?
目 录
目 录
第1章 C++语言概述 1
1.1 C++语言的发展历史 1
1.1.1 程序设计语言的分类 1
1.1.2 C++语言的发展历史 3
1.2 C++语言的特点 4
1.2.1 程序设计方法 4
1.2.2 C++语言的特色 6
1.3 使用VS .NET调试C++程序 6
1.3.1 什么是VS.NET 6
1.3.2 第一个C++程序 8
1.4 习题 16
第2章 数据类型、运算符和表达式 17
2.1 基本数据类型 17
2.1.1 整型 19
2.1.2 字符型 20
2.1.3 浮点型 21
2.1.4 布尔型 22
2.1.5 空型 23
2.2 常量和变量 23
2.2.1 常量 24
2.2.2 变量 26
2.3 输入输出 29
2.3.1 cout 30
2.3.2 cin 32
2.4 运算符和表达式 33
2.4.1 算术运算符和算术表达式 33
2.4.2 关系运算符与关系表达式 36
2.4.3 逻辑运算符和逻辑表达式 37
2.4.4 位运算符和位运算表达式 38
2.4.5 赋值运算符和赋值表达式 42
2.4.6 逗号运算符 43
2.4.7 sizeof运算符 44
2.5 数据类型的转换 45
2.5.1 赋值运算中的数据类型转换 45
2.5.2 表达式中的数据类型转换 46
2.6 构造数据类型 47
2.6.1 结构体 47
2.6.2 共用体 50
2.6.3 枚举 52
2.6.4 自定义数据类型 53
2.7 习题 54
第3章 控制结构 56
3.1 顺序结构 56
3.2 选择结构 57
3.2.1 if语句 57
3.2.2 switch语句 61
3.3 循环结构 65
3.3.1 while语句 65
3.3.2 do-while语句 67
3.3.3 for语句 68
3.3.4 goto语句 72
3.3.5 break和continue 72
3.4 程序设计举例 74
3.5 习题 79
第4章 函数和预处理命令 80
4.1 函数 80
4.1.1 函数的定义 80
4.1.2 函数的调用 82
4.1.3 函数的参数与函数的返回值 84
4.1.4 函数的嵌套调用与递归调用 88
4.1.5 局部变量和全局变量 91
4.1.6 存储类别 95
4.1.7 函数原型 100
4.2 预处理命令 101
4.2.1 宏定义 102
4.2.2 文件包含 104
4.2.3 条件编译 104
4.2.4 程序设计实例 107
4.3 习题 112
第5章 数组、字符串和指针 113
5.1 数组 113
5.1.1 一维数组 114
5.1.2 二维数组和多维数组 119
5.2 字符串 121
5.2.1 字符数组和字符串 121
5.2.2 标准字符串库函数 123
5.2.3 字符串数组 126
5.2.4 字符串应用举例 126
5.3 指针 128
5.3.1 指针的定义 129
5.3.2 使用简单的指针 129
5.3.3 指针和数组 133
5.3.4 指针和字符串 136
5.3.5 指针数组 138
5.3.6 多重间接访问 139
5.3.7 指针、数组与函数 141
5.3.8 main函数的参数 145
5.4 链表 148
5.4.1 什么是链表 148
5.4.2 链表的创建、插入和删除 149
5.4.3 使用链表创建一个学生成绩管理系统 157
5.5 习题 164
第6章 类与对象 165
6.1 类和对象的基本概念 165
6.2 构造函数与析构函数 171
6.3 内联函数 174
6.4 静态成员 178
6.5 对象数组 180
6.6 指向对象的指针 181
6.7 在函数中使用对象 184
6.8 this指针 189
6.9 友元 191
6.10 习题 195
第7章 继承、重载和多态性 196
7.1 继承 196
7.1.1 基类和派生类 196
7.1.2 继承的访问控制 199
7.1.3 派生类的构造函数和析构函数 202
7.1.4 多重派生 207
7.2 重载 209
7.2.1 函数重载 209
7.2.2 运算符重载 211
7.3 多态性 218
7.3.1 指向基类的指针和指向派生类的指针 218
7.3.2 虚函数 220
7.3.3 纯虚函数和抽象类 223
7.4 程序设计实例 225
7.5 习题 233
第8章 I/O系统和文件 234
8.1 流 234
8.1.1 流的概念 234
8.1.2 预定义的C++流 235
8.1.3 重载I/O运算符 235
8.2 格式化I/O 239
8.2.1 使用ios成员函数进行格式化输入输出 239
8.2.2 使用操控符实现格式化输入输出 243
8.3 文件流 247
8.3.1 打开和关闭文件 247
8.3.2 读写文本文件 249
8.3.3 读写二进制文件 250
8.3.4 其他I/O函数 254
8.4 程序设计实例 259
8.5 习题 262
第9章 模板、异常处理和命名空间 263
9.1 模板 263
9.1.1 函数模板 263
9.1.2 类模板 267
9.2 异常处理 271
9.2.1 基础知识 272
9.2.2 捕获所有异常 278
9.2.3 异常嵌套 279
9.3 命名空间 280
9.3.1 命名空间的定义 280
9.3.2 使用using引用命名空间 282
9.4 习题 284
第10章 创建MFC Windows应用程序 285
10.1 什么是MFC 285
10.1.1 MFC的优点 285
10.1.2 MFC的功能 286
10.1.3 如何使用 MFC 286
10.2 Windows程序设计基础 287
10.2.1 创建一个最简单的Windows程序 287
10.2.2 程序运行流程分析 290
10.2.3 框架窗口类 291
10.2.4 文档模板 293
10.2.5 文档类 294
10.2.6 视图类 295
10.2.7 文档/视图结构 296
10.2.8 程序员的工作 297
10.3 单文档应用 298
10.3.1 单文档类型和多文档类型 298
10.3.2 消息驱动 298
10.3.3 创建Hello World程序 299
10.3.4 创建一个简单的文本编辑器 301
10.4 多文档应用 311
10.4.1 MFC创建的MDI应用程序的结构 311
10.4.2 增强文本编辑器的功能 313
10.5 习题 317
第11章 对话框程序设计 319
11.1 对话框的使用 319
11.1.1 如何建立一个基于对话框的应用 319
11.1.2 常见的简单控件 320
11.2 菜单 336
11.2.1 编辑菜单 337
11.2.2 使用CMenu来管理菜单 337
11.2.3 编写代码 338
11.3 控制条 340
11.3.1 工具栏 341
11.3.2 状态条 343
11.4 习题 346
第12章 创建ActiveX控件 347
12.1 ActiveX概述 347
12.1.1 什么是ActiveX技术 347
12.1.2 ActiveX的主要内容 347
12.1.3 什么是ActiveX控件 348
12.1.4 ActiveX控件的基本组成 349
12.2 使用MFC开发ActiveX控件 349
12.2.1 创建一个Hello World控件 349
12.2.2 创建一个四则运算控件 352
12.2.3 添加属性 357
12.3 使用ATL开发ActiveX控件 366
12.3.1 ATL简介 366
12.3.2 使用ATL开发ActiveX控件 366
12.3.3 测试控件 371
12.4 习题 372
第13章 数据库和Internet程序设计 373
13.1 数据库 373
13.1.1 关系数据库基础 373
13.1.2 使用ODBC访问数据库 375
13.2 Internet程序设计 384
13.2.1 WinInet基础 384
13.2.2 一个简单的例子 385
13.3 习题 389