
本书深入浅出地介绍了标准C++面向对象的程序设计技术,以及用Visual C++进行面向对象的Windows程序设计的基本原理和方法,包括C++对C语言的扩展、类、对象、友元、继承、多态性、虚函数、重载、I/O流类库、文件、模板与STL、C++ Windows程序的结构、消息驱动、MFC应用程序框架、GDI、菜单、对话框、工具栏、文档与视图等内容。 全书本着易于理解、实用性强的原则设计其内容和案例,并以一个规模较大的综合性程序的编制贯穿于C++面向对象技术和Windows程序设计的全过程,引导读者理解和领会面向对象程序设计的思想、技术、方法和要领,掌握在Windows程序中应用自定义类实现程序功能的软件开发方法。 本书取材新颖,内容全面,通俗易懂,可作为高等院校计算机、电子信息类专业及其他理工类相关专业的教材,也可作为C++语言自学者或程序设计人员的参考用书。 读者对象:高等院校计算机、电子信息类专业及其他理工类相关专业的学生
第2版前言 面向对象编程技术降低了软件开发的复杂度,提高了软件开发的效率,能够开发出可靠性高、可重用和易维护的软件,是当今及未来很长一段时间内软件开发的主流技术。了解和掌握面向对象编程的基本原理和方法是进一步学习计算机应用和程序设计的基础。 C++语言是在C语言基础上扩充了面向对象机制而逐步发展起来的一种程序设计语言,程序结构灵活,代码简洁清晰,可移植性强,支持数据抽象、面向过程和面向对象程序设计。C++语言因其稳定性、高效性、兼容性和扩展性而被广泛应用于不同的领域和系统中,常被用来设计操作系统(如UNIX、Windows、Apple Macintosh)、设备驱动程序或者其他需要在实时约束下直接操作硬件的软件。图形学和用户界面设计是使用C++语言最深入的领域,银行、贸易、保险业、远程通信以及军事等诸多应用领域也常用C++语言设计其应用程序的核心代码,以求软件的最佳性能和开发效率。 无论从编程思想、代码效率、程序的稳定性和可靠性,还是从语言本身的实用性来讲,C++语言都是面向对象程序设计语言的典范。学好C++语言,不仅能够用于实际的程序设计,而且有助于理解面向对象程序设计技术的精髓,再学习诸如Java、C#之类的面向对象程序设计语言也就简单了。 十多年的C++语言教学经验和更长的编程实践给本书作者的真切体会是“读教科书明其理,看技术书知其用”。把教科书的原理剖析和技术书的案例分析相结合有利于深刻地理解和掌握C++语言程序设计的基本原理和技术,有利于将学到的技术用于实际的软件开发中。 本书即基于这样的认知体会而编写,兼具C++技术书籍和教材的特点。既比较深刻地介绍了C++面向对象的程序技术和原理,又清晰地介绍了Windows平台下的C++程序实现方法,且通过程序实例将两者较好地结合在一起。书中基于DOS平台精心设计了一个贯穿全书大部分章节的规模较大的专业课程类管理程序comFinl,并不断地利用面向对象的C++程序技术扩充该程序的功能,使之成为一个比较完整的综合程序,并最终将它从DOS平台移植到Windows系统中,成为一个Windows应用程序。读者可借此掌握C++应用程序的设计方法,以及将DOS程序中的自定义类移植到Windows程序中的方法和过程。 本书是《C++面向对象程序设计》的第2版。其第1版自2007年出版以来,受到广大师生和软件开发人员的好评,重印多次,得到了多所高校的认可,许多学生发来求解书中疑问或习题参考答案的邮件,一些软件开发人员与作者邮件探索了将C++类移植到Windows程序中的方法,还有不少读者指出了书中的错误和缺限。这些是本书得以进步和持续发展的源泉。 这次修订充分采纳了广大教师和读者的意见,保留了本书第1版的整体结构,但精简了部分章节的内容,删除了一些深奥难懂且不太实用的技术原理分析,并对一些程序案例进行了重新设计,使本书更加精炼和实用。 全书共分为12章。第1~2章介绍C++语言的基础知识。第1章介绍面向对象程序设计的主要特征、C++程序的结构、数据输入/输出以及Visual C++ 6.0编程环境;第2章介绍C++语言对C语言非面向对象方面的扩充,主要包括指针、常量、引用、类型转换、函数重载、内联函数、作用域、命名空间及C++文件操作。 第3~9章介绍C++面向对象程序设计的特征、思想和方法,包括类与对象、继承与派生、虚函数、运算符重载、模板与STL程序设计、异常、文件与I/O流等内容。 第10~11章介绍Visual C++ Windows程序设计的原理和方法。第10章介绍C++ Windows程序设计的基础知识,包括Windows程序设计的常用数据结构、程序运行原理、消息驱动、API程序设计等内容;第11章介绍MFC应用程序框架的设计原理和方法,包括事件函数、对话框、控件、GDI、菜单和工具栏设计等内容。 第12章介绍将第4~9章逐步完善的基于DOS平台的C++课程管理程序comFinal移植到Windows程序中的方法。在MFC向导创建的应用程序框架中逐步引入在DOS平台下完成的多个自定义类,并通过事件函数、对话框、工具栏、菜单调用这些自定义类的对象,示范了在Windows程序中操作自定义类、开发Windows应用软件的方法。 本书内容全面、析理透彻、注重实用。书中精心设计了易于理解和富有代表性的释意图和案例程序,清晰而深入浅出地展示了C++面向对象程序设计的原理和各种技术,并对面向对象编程过程中容易发生的误解和错误进行重点分析,颇具启发性,有利于程序设计能力的培养与提高。书中所有案例程序均在Microsoft Visual C++ 6.0环境中测试通过。 本书由杜茂康、李昌兵、曹慧英、王永和张仿编写。李昌兵编写了第1、2、3、4章,曹慧英编写了第5、6、7章,张仿编写了第8、9章,王永编写了第10、11章,杜茂康编写了第12章,全书由杜茂康审校和统稿。 本书在编写过程中得到了不少专家、学者、老师和同事的指导、支持和帮助。罗龙艳、谢青、刘友军、武建军、罗文龙等老师参与了本书编写大纲的讨论与确定,2004级信息管理与信息系统专业的两位忠实的学生李明闯和王晓润仔细地阅读了本书第1版初稿中的每一个字符、每一行代码,校正了初稿中的许多错误,并提出了许多有用的建议。刘曜教授对本书的编著方式和章节安排提出了有益的建议,刘达明、刘跃两位教学专家结合教学规律从章节内容的详略难易设置等方面给予本书富有建设性的指导,在此谨向他们表示诚挚的感谢! 在本书的编写过程中阅读参考了国内外大量的C++语言的相关书籍,这些书籍已被列在书后的参考文献中,在此谨向这些书籍的作者表示衷心感谢! 面向对象程序设计是一项不断发展变化的程序技术,C++语言更是博大精深,鉴于作者才疏学浅,水平有限,加之经验不足,书中一定存在不少错误和不当之处,恳请专家、同行和读者批评指正。 为了便于读者学习和教师教学,本书配有以下辅助资源:全部例题的程序代码,部分习题的程序代码,配套的PPT电子课件,可从华信教育资源网(http://www.hxedu.com.cn)上进行下载。 读者反馈:unicode@phei.com.cn。 作 者
目 录 第1章 C++与面向对象程序设计概述 1 1.1 面向过程与面向对象程序设计 1 1.2 面向对象程序语言的特征 3 1.3 C++与面向对象程序设计 6 1.4 C++程序的结构 7 1.5 数据输入与输出 10 1.5.1 流的概念 10 1.5.2 cin和析取运算符>> 10 1.5.3 cout和插入运算符<< 12 1.5.4 输出格式控制符 14 1.5.5 数制基数 15 1.6 编程实作——VC++ 6.0编程简介 16 1.6.1 在VC++中编辑源程序 16 1.6.2 编译和调试程序 18 1.6.3 关于Visual C++的项目工作区文件 19 1.6.4 利用Visual C++向导创建应用程序 20 习题1 21 第2章 C++基础 22 2.1 C++对C语言数据类型的扩展 22 2.2 局部变量声明 23 2.3 指针 23 2.3.1 指针概念的回顾 23 2.3.2 指针与0和void* 24 2.3.3 new和delete 25 2.4 引用 27 2.5 const常量 29 2.5.1 常量的定义 29 2.5.2 const与指针 30 2.5.3 const与引用 31 2.6 类型转换 32 2.6.1 隐式类型转换 32 2.6.2 显式类型转换 33 2.7 函数 34 2.7.1 函数原型 34 2.7.2 函数默认参数 36 2.7.3 函数与引用 36 2.7.4 函数与const 40 2.7.5 函数重载 41 2.8 内联函数 43 2.9 typedef 44 2.10 命名空间 44 2.11 预处理器 47 2.12 作用域和生命期 48 2.12.1 作用域 48 2.12.2 变量类型及生命期 50 2.12.3 变量初始化 52 2.12.4 局部变量与函数返回地址 52 2.13 文件输入和输出 53 2.14 编程实作 54 习题2 56 第3章 类与对象 59 3.1 结构与类 59 3.1.1 C++对结构的扩展 59 3.1.2 类 60 3.2 成员函数 62 3.2.1 成员函数的定义 62 3.2.2 常量成员函数 63 3.3 类与封装 64 3.4 对象 65 3.5 构造函数 67 3.5.1 构造函数 67 3.5.2 无参构造函数 69 3.5.3 重载构造函数 71 3.5.4 拷贝构造函数 72 3.5.5 构造函数与初始化列表 75 3.6 析构函数 77 3.7 静态成员 79 3.8 this指针 82 3.9 类对象成员 85 3.10 对象数组和对象指针 88 3.11 向函数传递对象 89 3.12 类的作用域和对象的生存期 90 3.13 友元 92 3.14 编程实作:类的接口与实现的分离 94 3.14.1 头文件 94 3.14.2 源文件 95 3.14.3 对类的应用 96 习题3 98 第4章 继承 102 4.1 继承的概念 102 4.2 protected和继承 103 4.3 继承方式 104 4.4 基类与派生类的关系 107 4.4.1 成员函数的重定义和名字隐藏 107 4.4.2 基类成员访问 109 4.5 构造函数和析构函数 109 4.5.1 派生类构造函数、析构函数的定义和调用次序 109 4.5.2 构造函数和析构函数的构造规则 110 4.5 多继承 115 4.5.1 多继承的概念和应用 115 4.5.2 多继承方式下成员名的二义性 117 4.5.3 多继承的构造函数与析构函数 117 4.6 虚拟继承 119 4.7 基类与派生类对象的关系 123 4.8 继承与组合 125 4.9 编程实作 125 习题4 130 第5章 多态性 133 5.1 静态绑定和动态绑定 133 5.2 虚函数 133 5.2.1 虚函数的意义 133 5.2.2 虚函数的特性 136 5.3 虚析构函数 140 5.4 纯虚函数与抽象类 141 5.4.1 纯虚函数和抽象类 141 5.4.3 抽象类的应用 143 5.4 运行时类型信息 149 5.4.1 dynamic_cast 149 5.4.2 typeid 153 5.5 编程实作 154 习题5 156 第6章 运算符重载 159 6.1 运算符重载基础 159 6.2 重载二元运算符 161 6.2.1 类与二元运算符重载 161 6.2.2 友元二元运算符重载的特殊用途 164 6.3 重载一元运算符 166 6.3.1 作为成员函数重载 166 6.3.2 作为友元函数重载 167 6.4 特殊运算符重载 169 6.4.1 运算符++和--的重载 169 6.4.2 重载赋值运算符= 171 6.4.3 重载[] 173 6.4.4 类与其他数据类型之间的转换 175 6.5 输入/输出运算符重载 177 6.5.1 重载输出运算符<< 177 6.5.2 重载输入运算符>> 177 6.5.3 重载运算符<<和>>举例 178 6.6 编程实作 179 习题6 183 第7章 模板与STL 186 7.1 模板概念 186 7.2 函数模板与模板函数 187 7.2.1 函数模板的定义 187 7.2.2 函数模板的实例化 188 7.2.3 模板参数 189 7.3 类模板 192 7.3.1 类模板的概念 192 7.3.2 类模板的定义 192 7.3.3 类模板实例化 194 7.3.4 类模板的使用 196 7.4 STL 197 7.4.1 容器 197 7.4.2 迭代器 205 7.4.3 关联式容器 207 7.4.4 算法 211 7.5 编程实作 214 习题7 216 第8章 异常 217 8.1 异常处理概述 217 8.2 C++异常处理基础 218 8.2.1 异常处理的结构 218 8.2.2 异常捕获 219 8.3 异常与函数 220 8.4 异常处理的几种特殊情况 222 8.5 异常和类 225 8.5.1 构造函数与异常 225 8.5.2 异常类 226 8.5.3 派生异常类的处理 230 习题8 232 第9章 文件与流 235 9.1 C++ I/O流及流类库 235 9.2 使用I/O成员函数 236 9.2.1 istream流中的常用成员函数 237 9.2.2 ostream流中的常用成员函数 239 9.2.3 数据输入、输出的格式控制 240 9.3 文件操作 242 9.3.1 文件与流 243 9.3.2 二进制文件 245 9.3.3 随机文件 249 习题9 250 第10章 C++ Windows程序设计基础 253 10.1 Windows程序设计基础 253 10.1.1 窗口 253 10.1.2 事件驱动和消息响应 253 10.1.3 Windows程序的文件构成 254 10.1.4 Visual C++的Windows程序设计方法 255 10.2 Windows程序设计的常用数据结构 256 10.3 Windows程序的基本结构 259 10.4 Windows程序的控制流程 261 10.5 Windows程序的数据输出 267 10.6 消息驱动程序设计 270 习题10 273 第11章 MFC程序设计 275 11.1 MFC程序基础 275 11.1.1 MFC类 275 11.1.2 MFC程序的结构 277 11.1.3 MFC程序的执行流程 279 11.1.4 消息映射 281 11.2 应用程序框架 283 11.2.1 应用程序框架的概念 283 11.2.2 用向导建立应用程序框架 283 11.2.3 应用程序框架的结构 286 11.2.4 应用程序框架类之间的关系 292 11.3 MFC程序的数据输出 294 11.3.1 MFC中的图形类 294 11.3.2 绘图对象 296 11.3.3 用MFC向导添加消息映射函数 297 11.3.4 OnPaint函数与输出 302 11.4 对话框 304 11.4.1 对话框的类型 304 11.4.2 用资源编辑器建立对话框 304 11.5 菜单和工具栏 310 11.5.1 直接修改应用程序框架的菜单 310 11.5.2 建立新菜单栏 313 11.5.3 工具栏操作 314 11.6 视图与文档 315 习题11 318 第12章 综合程序设计 320 12.1 在应用程序框架中包含并修改自定义类 320 12.2 在事件函数中操作类对象 322 12.3 添加对话框 325 12.4 添加程序菜单 327 12.5 文档序列化 331 习题12 341 参考文献 342
http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=G0136250