本书系统地介绍了C++言的基本知识。全书在介绍C++语言基础的基础上,重点介绍了面向对象技术在该语言中的应用。其中着重介绍了数据类型和表达式、流程控制语句、函数、数组、结构体、指针和引用、类、类的成员、继承性、多态性等等。\r\n 本书是作者总结多年教学和编程的实践经验编写而成的,力求以浅显的语言讲解晦涩难懂的语法规则,配以大量的图解和例题,力争做到深入浅出,详略得当,以适合各种层次的读者。在每一章的最后指出该章的重点和难点,便于读者在学习时有的放矢。全书习题丰富,难度适中,以利于读者消化所学的知识。\r\n 本书可作为理、工科院校计算机专业的语言基础课的教材和教学参考书,也可作为理、工科院校非计算机专业C++课程的教材和教学参考书,还可以作为编程爱好者及其他自学者的参考书。
第1章 C++的基本知识\r\n\r\n1.1 数据类型\r\n1.1.1 数据类型\r\n1.1.2 关键字\r\n1.1.3 标识符、标点符号、分隔符\r\n1.1.4 基本数据类型\r\n1.1.5 常量\r\n1.1.6 变量\r\n1.2 运算符和表达式\r\n1.2.1 基本运算符\r\n1.2.2 表达式\r\n1.3 简单的输入/输出\r\n1.3.1 输出流:cout\r\n1.3.2 输入流:cin\r\n1.3.3 prinf(),scanf()\r\n小结及思考与练习题\r\n\r\n第2章 流程控制语句\r\n\r\n2.1 C++的语句和程序结构\r\n2.1.1 C++语言的语句\r\n2.1.2 程序的三种基本结构\r\n2.2 分支结构语句\r\n2.2.1 条件语句\r\n2.2.2 条件运算符“?:”\r\n2.3.3 switch语句\r\n2.3 循环结构语句\r\n2.3.1 while()语句\r\n2.3.2 do…while()语句\r\n2.3.3 for()语句\r\n2.4 控制执行顺序的语句\r\n2.4.1 break语句\r\n2.4.2 continue语句\r\n2.4.3 goto语句\r\n2.4.4 exit()和abort()函数\r\n2.5 综合应用举例\r\n小结及思考与练习题\r\n\r\n第3章 函数和编译预处理\r\n\r\n3.1 函数的定义和调用\r\n3.1.1 函数概述\r\n3.1.2 函数定义\r\n3.1.3 函数调用\r\n3.2 函数的重载\r\n3.3 内联函数\r\n3.4 函数的原型说明与值调用\r\n3.4.1 函数的原型说明\r\n3.4.2 函数的值调用\r\n3.5 函数的嵌套调用和递归调用\r\n3.5.1 函数的嵌套调用\r\n3.5.2 函数的递归调用\r\n3.6 作用域和存储类型\r\n3.6.1 作用域\r\n3.6.2 存储类型\r\n3.7 参数特殊的函数\r\n3.7.1 具有默认参数值的函数\r\n3.7.2 参数个数可变的函数\r\n3.8 编译预处理\r\n3.8.1 "文件包含"处理\r\n3.8.2 宏定义\r\n3.8.3 条件编译\r\n3.9 程序的多文件组织\r\n3.9.1 内部函数和外部函数\r\n3.9.2 多文件组织的编译和连接\r\n小结及思考与练习题\r\n\r\n第4章 数组\r\n\r\n4.1 数组的定义和使用\r\n4.1.1 一维数组的定义和使用\r\n4.1.2 多维数组的定义和使用\r\n4.1.3 数组和函数\r\n4.2 字符数组\r\n4.2.1 字符数组的定义及初始化\r\n4.2.2 字符数组的使用\r\n4.3 字符串处理函数\r\n小结及思考与练习题\r\n\r\n第5章 结构体、共用体和枚举类型\r\n\r\n5.1 结构体\r\n5.1.1 结构体类型的说明\r\n5.1.2 定义结构体类型的变量\r\n5.1.3 结构体类型变量的使用\r\n5.1.4 结构体数组\r\n5.1.5 结构体类型的静态成员\r\n5.1.6 位域\r\n5.2 共用体\r\n5.3 枚举类型\r\n5.3.1 枚举类型及枚举类型变量\r\n5.3.2 枚举类型变量的使用\r\n小结及思考与练习题\r\n\r\n第6章 指针和引用\r\n\r\n6.1 基本知识\r\n6.1.1 地址和指针\r\n6.1.2 指针变量\r\n6.1.3 指针变量可执行的运算\r\n6.3.2 结构体类型的指针\r\n6.2 指针和数组\r\n6.2.1 用指针访问数组元素\r\n6.2.2 指针和字符串\r\n6.3 指针数组和多级指针\r\n6.3.1 指针数组\r\n6.3.2 指向数组的指针\r\n6.3.3 多级指针\r\n6.4 指针与函数\r\n6.4.1 指针作为函数的参数\r\n6.4.2 返回类型为指针的函数\r\n6.4.3 带参数的main()函数\r\n6.4.4 函数指针\r\n6.5 动态分配内存空间\r\n6.6 引用\r\n6.6.1 引用类型变量的定义和使用\r\n6.6.2 引用和函数\r\n6.7 其他类型的指针\r\n6.7.1 void指针\r\n6.7.2 const类型指针\r\n6.8 类型定义\r\n6.9 简单链表及其应用\r\n6.9.1 链表的基本概念\r\n6.9.2 链表构建与操作\r\n小结及思考与练习题\r\n\r\n第7章 面向对象程序设计\r\n\r\n7.1 面向对象思想的产生历程及其内涵\r\n7.7.1 面向对象思想产生的必要性\r\n7.1.2 面向对象的内涵\r\n7.2 面向对象程序设计\r\n7.2.1 结构化程序设计\r\n7.2.2 面向对象程序设计\r\n7.2.3 面向对象程序设计语言\r\n思考题\r\n\r\n第8章 面向对象基本概念及其特点\r\n\r\n8.1 对象\r\n8.1.1 对象的定义\r\n8.1.2 对象的属性和状态\r\n8.1.3 对象的行为\r\n8.2 类\r\n8.3 面向对象系统的特点\r\n8.3.1 封装\r\n8.3.2 继承\r\n8.3.3 多态\r\n思考题\r\n\r\n第9章 类及对象的封装性\r\n\r\n9.1 类\r\n9.1.1 类的定义\r\n9.1.2 类的\r\n9.2 类的使用\r\n9.2.1 对象的创建\r\n9.2.2 对象的使用\r\n9.2.3 对象数组和对象指针\r\n9.2.4 *ths指针\r\n9.2.5 类实现数据的封装\r\n小结及思考与练习题\r\n\r\n第10章 类的成员\r\n\r\n10.1 类的成员函数的定义和调用\r\n10.1.1 成员函数的定义\r\n10.1.2 成员函数的调用\r\n10.2 成员函数的重载\r\n10.3 构造函数\r\n10.3.1 构造函数的定义\r\n10.3.2 构造函数和对象的初始化\r\n10.3.3 构造函数的重载\r\n10.3.4 默认构造函数和具有默认参数值的构造函数\r\n10.3.5 构造函数的两类特殊用途\r\n10.4 析构函数\r\n10.5 对象成员\r\n10.6 const对象和const成员函数\r\n10.6.1 const对象\r\n10.6.2 const成员函数\r\n10.6.3 const成员数据\r\n10.7 友元\r\n10.7.1 友元函数\r\n10.7.2 友元成员函数\r\n10.7.3 友元类\r\n10.8 静态成员\r\n10.8.1 静态成员数据\r\n10.8.2 静态成员函数\r\n10.9 调用构造函数及析构函数小结\r\n小结及思考与练习题\r\n\r\n第11章 继承\r\n\r\n11.1 继承\r\n11.1.1 基本概念\r\n11.1.2 单一继承\r\n11.1.3 多重继承\r\n11.2 基类的初始化\r\n11.3 继承中的几个问题\r\n11.3.1 访问类型的调整\r\n11.3.2 冲突\r\n11.3.3 成员覆盖\r\n11.3.4 赋值兼容规则\r\n11.4 虚基类\r\n11.4.1 虚基类的概念\r\n11.4.2 虚基类的初始化\r\n小结及思考与练习题\r\n\r\n第12章 虚函数和多态性\r\n\r\n12.1 多态性\r\n12.2 虚函数的定义和使用\r\n12.2.1 为什么要引入虚函数\r\n12.2.2 虚函数的定义与使用\r\n12.2.3 虚函数与函数重载\r\n12.2.4 虚析构函数与基类的构造函数调用虚函数\r\n12.3 纯虚函数和抽象类\r\n小结及思考与练习题\r\n\r\n第13章 运算符重载\r\n\r\n13.1 运算符重载\r\n13.1.1 基本概念和方法\r\n13.1.2 单目运算符重载\r\n13.1.3 二日运算符重载\r\n13.2 几个特殊运算符的重载\r\n13.2.1 “++”和“-”运算符的重载\r\n13.2.2 赋值运算符的重载\r\n13.2.3 数组下标运算符“[]”的重载\r\n13.2.4 函数调用运算符“()”的重载\r\n13.2.5 new和delete运算符的重载\r\n13.3 类型转换函数\r\n小结及思考与练习题\r\n\r\n第14章 模板\r\n\r\n14.1 模板的定义\r\n14.2 函数模板\r\n14.2.1 函数模扳的定义\r\n14.2.2 重载模板函数\r\n14.3 类模板\r\n14.3.1 类模板的定义\r\n14.3.2 模板类的实例化\r\n14.3.3 模板对象作为函数模板的形参\r\n14.3.4 类模板的派生\r\n小结及思考与练习题\r\n\r\n第15章 异常处理\r\n\r\n15.1 基本概念\r\n15.2 异常的实现\r\n15.3 异常处理程序\r\n15.4 多路捕获\r\n15.5 使用异常的方法\r\n15.5.1 异常枚举\r\n15.5.2 异常类派生\r\n15.6 标准库异常层次\r\n小结及思考与练习题\r\n\r\n第16章 输入/输出流\r\n\r\n16.1 流\r\n16.1.1 输入/输出流的特点\r\n16.1.2 流库的类层次结构\r\n16.2 输出流\r\n16.2.1 使用预定义插入运算符输出\r\n16.2.2 使用成员函数put()输出一个字符\r\n16.2.3 使用成员函数write()输出一串字符\r\n16.2.4 重载插入符输出新的数据类型类型\r\n16.3 输入流\r\n16.3.1 使用预定义提取运算符输入\r\n16.3.2 使用成员函数get()或getline()输入字符序列\r\n16.3.3 使用成员函数read()输入一串字符\r\n16.3.4 重载提取符输入新的数据类型\r\n16.4 格式化输入/输出\r\n16.4.1 使用ios类成员函数进行格式控制\r\n16.4.2 使用流操纵算子进行格式化控制\r\n16.5 文件流\r\n16.5.1 C++文件概述\r\n16.5.2 文件的打开与关闭\r\n16.5.3 文本文件的读/写\r\n16.5.4 二进制文件的读/写\r\n16.6 字符串流\r\n16.6.1 ostrstream类流\r\n16.6.2 istrstream类流\r\n小结及思考与练习题\r\n\r\n附录A Visual C++6.0基本操作\r\n附录B ASCll码表\r\n附录C 常用的库函数\r\n参考文献
从20世纪70年代第一次提出面向对象的概念开始,到现在面向对象技术己发展成为一种比较成熟的编程思想。通过面向对象技术,可以将现实世界直接影射到面向对象解空间,从而为系统的设计和开发带来革命性的影响。
Visual C++语言是目前为止功能最强、最受欢迎、应用最广泛的、高效的Windows应用程序开发工具,它是在C语言基础之上发展起来的,是C语言的超集。相对于其他计算机语言来说,学习并掌握VisuaI C++具有一定的难度,但当你能够熟练驾驭该语言的时候,你将几乎无所不能,因此熟练运用Visual C++是几乎每一个程序开发人员所梦寐以求的事。
Visual C++是一个典型的面向对象程序设计语言,因此要真正学好Visual C++,首先必须掌握面向对象思想的精髓。基于这一点,本书围绕面向对象思想及其在Visual C++语言中的应用而展开,着重介绍Visual C++的语言基础,力求使读者在学习Visual C++的过程中逐步掌握面向对象的思想和方法,并为今后进一步学习利用MFC编程及Visual C++的其他高级编程打下良好的基础。
全书共有16章,可分为三部分,第一部分(1至6章)为Visual C++语言的基础部分,该部分没有有关面向对象方面的内容,与Visual C++的前身C语言有许多类似之处,对于有C语言基础的读者,这一部分可只学习第1章中的简单输入/输出,第3章中的具有默认参数值的函数,第6章中的new和delete运算符、引用、其他类型的指针等内容,其他内容则可跳过。第二部分(第7、8章)简单介绍面向对象的理论基础及其特点,通过这一部分的学习,读者可以了解面向对象的发展历程,面向对象中的基本概念以及面向对象的三大特点,从而为第三部分的学习打下理论基础。第三部分(第9—16章)介绍面向对象思想在Visual C++语言中的应用以及模板和异常处理等Visual C++语言中常用的编程工具和方法,如果说第一部分是基础的话,那么这一部分就是全书的重点和精华部分。
第1章介绍数据类型、运算符和表达式等Visual C++的基本知识;第2章介绍分支结构语句、循环语句等Visual C++的流程控制语句;第3章介绍函数的定义及调用的各种形式、作用域与存储类型、具有默认参数值的函数以及编译预处理等方面的知识,这一章是全书的重点之一;第4章介绍一维数组和多维数组的定义及应用,字符数组的定义和应用等有关数组方面的基本知识;第5章介绍结构体、共用体和枚举类型等导出数据类型;第6章介绍指针和地址的概念,指针和数组的关系,指针和函数的关系,new和delete运算符,引用的定义及其在函数中的应用以及const类型的指针等,这一章既是重点之一,也是全书的难点所在;第7章和第8章简要说明面向对象的起源,面向对象程序设计以及面向对象的三大特点等;第9章介绍类的概念及其应用以及,*this指针等;第10章介绍类的成员函数的定义和调用、重载的概念、各种形式的构造函数的定义和功能、析构函数的定义和功能、对象成员、友元以及静态成员等,这一章也是全书的重点之一;第11章介绍继承性的概念及其实现方法、冲突、支配规则以及赋值兼容规则、虚基类等;第12章介绍动态多态——虚函数的定义和使用;第13章介绍用成员函数和友元函数实现一元和二元运算符重载的方法,类型转换以及几种特殊运算符的重载:第14章介绍函数模板和类模板的定义和应 用;第15章介绍异常的概念及其处理方法;第16章介绍输入/输出流及文件流等。
只有通过大量的上机编程、调试才能真正掌握一门语言,因此本书精选大量的例题,结合重点知识进行讲解,本书中的例题都在Visual C++ 6.0上调试通过。同时,习题和实验内容丰富,基本覆盖全书的知识点,可用来巩固和检验所学的知识。
书后的三个附录提供了Visual C++的基本操作、ASCII码表以及常用的库函数,可供读者在编程时查阅。
参加本书编写工作的还有南京工业大学信息学院的周强老师、陈东老师、孙冰老师、杨慧老师,他们参与了本书大纲的讨论和制定,并直接编写了部分章节,且对全书进行了仔细的校对。
感谢武汉化工学院李学汇教授,从本书的大纲的制定到最后完稿,李教授都一直关注并提出许多中肯的意见。感谢沈阳化工学院陈未如教授,陈教授对本书的进程一直给予关心和支持,并从百忙之中抽出时间给予及时的指导。
感谢南京工业大学的蔡瑞瑛、邵定宏、李亚非、赵璐等关心和帮助过我们的老师,正是有他们的默默支持和鼓励,才使该书最终得以完成并出版。
最后,还要感谢南京工业大学教务处所提供的资金支持。
由于作者水平有限,再加上时间仓促,错误与疏漏之处在所难免,如发现错误,请不吝赐教,我们将不胜感激。在使用该书时如遇到什么问题需要与作者切磋,或想索取本书例题的源代码与课件,请与作者联系。联系方式:nj_Iiubin@163.com
编者
2002.12