前言 C++语言是在C语言基础上扩充了面向对象机制而形成的一种面向对象程序设计语言。一方面,C++语言全面兼容C语言,强调结构化的编程思想; 另一方面,C++语言支持面向对象的方法,实现了类的封装、数据隐藏、继承及多态性等,其代码具有易维护且可重用等特征。 没有编程基础的学生学习C++语言时,大都感到难学、难入门,甚至半途而废。编者根据多年C++语言的教学经验,借鉴部分中外经典的C++语言教材,编写了这本易于学生理解、便于学生建立编程思维的教材。本书的主要特色如下: (1) 知识结构完整。本书包括与C++语言编程相关的信息技术部分知识,可以自成一体; 不仅包括C++语言面向过程部分的基本语法和基本算法,强调结构化的编程思想,还包括面向对象部分的编程,建立了一套面向对象的编程思想。 (2) 问题分析清楚。本书对于一些重要且难以理解的知识点结合图示进行了分析,可使学生有一个形象直观的认识,从本质上理解问题; 给出了一套有效的C++语言程序分析方法,方便学生更清晰地分析问题和解决问题。 (3) 内容循序渐进。本书对各语法点仅做基本介绍,不深究其细节,能解决一些小的问题。首先把学生引进门,培养学生的编程兴趣; 然后在课后习题中逐步提升求解问题的难度,培养学生解决复杂问题的能力。 (4) 范例易于理解。本书对C++语言中的基本语法配合实例进行阐述,作者精挑细选了一些范例程序,力求讲解清晰,深入浅出,突破难点,激发学生的编程兴趣。 全书共分为15章。 第1章: C++语言概述,介绍C++语言的发展历史、结构化编程和面向对象程序设计的概念,以及C++语言程序的开发过程。 第2章: 信息表示和算法简介,介绍数值和字符信息在计算机中表示的方法、算法的定义和特性,以及3种编程结构的流程图表示方法。 第3章: 基本数据类型和表达式,介绍C++语言的基本数据类型、运算符与表达式、数据类型转换,以及常用库函数。 第4章: 简单程序设计,介绍数据的输入/输出,以及简单的顺序结构程序设计等。 第5章: 流程控制结构,介绍选择结构、循环结构和其他流程控制语句,以及典型程序示例。 第6章: 函数,介绍函数的定义与调用、内联函数、函数重载及函数的作用域和存储类型等。 第7章: 编译预处理,介绍编译预处理的知识及3种预处理指令——宏、文件包含和条件编译。 第8章: 数组,介绍一维数组和二维数组的定义与引用、数组名作为函数参数的应用,以及字符数组与字符串的应用。 第9章: 指针,介绍指针与指针变量的概念、指针运算、指针数组、函数指针、指向函数的指针等。 第10章: 结构体、共用体和枚举类型,介绍C++语言的构造数据类型,包括结构体、共用体和枚举,对单向链表的各种操作也做了详细的说明。 第11章: 类和对象,介绍类和对象的定义方法、对象的初始化、this 指针、构造函数、析构函数、复制构造函数、友元函数和友元类、静态成员,以及常成员和常对象等。 第12章: 运算符重载,介绍单目与双目运算符的重载,包括重载为成员函数或友元函数在定义格式及应用中的区别。 第13章: 继承和派生,介绍基类和派生类、单继承、多继承和虚基类、继承中冲突的解决和支配规则、虚函数与运行时的多态性的概念等。 第14章: 输入/输出流,介绍I/О标准流类、键盘输入和屏幕输出、磁盘文件的输入/输出等。 第15章: 模板和异常处理,介绍模板的概念和异常处理方法。 本书所列举的例题、习题均已在Visual Studio 2010下调试通过,书中标有“*”的章节为选讲内容。 在编写本书的过程中,编者参阅了大量C++语言的参考书和有关资料,在此向这些参考文献的作者表示诚挚的谢意! 本书由丁卫平、程学云、陈文兰任主编,任红建、沈晓红、文万志任副主编,徐敏、顾颀、卢春红、刘云、徐剑、张洁、袁佳祺、赵理莉、何海棠等参编。 本书的编写得到了国家一流专业建设点(南通大学计算机科学与技术专业)给予的资助,在出版过程中得到了清华大学出版社的支持和帮助,在此表示衷心的感谢,同时感谢研究生李铭和朱明强等同学在本书排版和校对时给予的帮助! 由于编者水平有限,书中难免有疏漏与不妥之处,恳请同行和读者批评指正。 编者 2023年6月