前言 本书是一本C++语言的全面学习教材,涵盖了全体编著人员在长期的学习、使用和教学过程中积累的C++语言应用知识。对C++语言的庞大体系做了适当的取舍,保留了C++语言易用的“精华”部分,抛弃了那些难懂的复杂语法体系。本书以通俗易懂的方式,详细介绍了类的构建与对象的应用方法,深入浅出地介绍了类的三大特性:封装、继承和多态,全面介绍了C++语言的模板类及其用法。 本书内容包括12章。 第1章绪论,介绍了C++语言发展简史,详细阐述了Visual Studio和RAD Studio两个编写C++语言程序的最佳集成开发环境的用法,讨论了数制转换和整数存储方式,论述了C++语言的输入和输出操作。 第2章数据类型与C++语言表示,详细讲述了C++语言的整数、布尔型、浮点数、字符、数组、字符串、结构体、枚举和共用体等数据类型,介绍了这些类型变量的定义、赋值和运算方式。 第3章运算符、控制与指针,全面讨论了C++语言的算术运算符、关系运算符、逻辑运算符、位运算符、自增自减运算符、赋值运算符、sizeof运算符、条件运算符和逗号运算符等,介绍了分支控制和循环控制程序设计方式,并讲述了指针与引用的用法。 第4章函数,系统讲述了函数的定义与调用方法,讨论了指针作为函数的参数和指向函数的指针的用法,深入介绍了递归函数的设计方法。 第5章类与对象,分析了结构体与类的关系,深入介绍了类的概念、构造方法、set与get方法、析构方法等,讨论了面向对象程序设计的优势,讲述了对象与指针的用法,还探讨了静态函数与友元函数的意义与用法,指出了对象复制的注意事项。 第6章继承与多态,讲述了继承的各种方式及其对基类与子类间成员的访问属性的影响,重点讨论了公有继承方式及其程序设计方法,介绍了子类构造方法、方法覆盖技术以及多态技术。 第7章运算符重载,深入讨论了C++语言运算符重载程序设计方法,通过实例重点介绍了双目运算符的重载方法。 第8章宏与模板,介绍了宏定义与宏函数,在此基础上深入介绍了模板函数和模板类,并着重讲述了设计参数个数可变的函数的方法。 第9章异常与文件,讲述了C++语言程序的异常捕获与处理方法,详细讨论了文本文件和二进制文件的读写操作。 第10章动态数组,介绍了单向动态数组vector和双向动态数组deque的应用方法,讨论了lambda函数和伪随机数发生器的程序设计方法。 第11章链表,深入介绍了自定义单向链表和自定义双向链表的程序设计方法,然后,借助单向链表模板类和双向链表模板类讲述了借助C++语言标准模板类库实现链表数据结构的方法。 第12章字符串,讲述了字符串模板类定义字符串对象的方法,讨论了字符串的初始化和赋值等基本操作,介绍了字符串合并、追加、插入、删除、查找和替换等常用操作,还介绍了字符串的大小写英文字母转换方法。 每章内容后均附有一定数量的习题,供编程练习使用。 本书用作计算机工程、软件工程、网络工程和物联网工程等相关专业的C++语言课程教材时,应讲述全部内容,建议96学时;用作非计算机类专业的C++语言课程教材时,建议讲述第1~7章,并选学第9章,建议64学时。本书在作为江西财经大学计算机类学生的C++语言课程教材时,总学时为112学时,其中理论课56学时,实验课56学时,课后大作业9个。对于自学本书的读者,在学习理论知识的同时,建议手工输入全书的实例代码,并完成调试和运行工作。学好和用好C++语言的最佳方式是勤于编写和调试程序。 本书由江西财经大学软件与物联网工程学院C++语言课程组编写,其中,陈伟编写第1、2章,唐颖军编写第3章,张翰进编写第4章,张勇编写第5~8章,徐安妮编写第9、10章,中国光学科学技术馆贾晓阳编写第11、12章,全书由张勇统稿。全体作者感谢217VR和218VR班级的同学们,他们校对了本书的讲义并提出了宝贵的修改意见。感谢清华大学出版社的编辑为本书出版所做的辛勤工作。 尽管我们细致地校对了本书中的文字和代码,但受水平和能力所限,书中难免存在各种错漏,欢迎广大读者批评指正。 编者于江西财经大学麦庐园2022年6月 源码 教学课件 教学大纲