C++程序设计教程
2010-8
机械工业
邬延辉//王小权//陈叶芳
263
C++语言是从C语言发展而来的一种高级程序设计语言,它具有全面兼容C语言并支持面向对象的特点,深受广大编程爱好者的喜爱。在过去的十多年里,面向对象设计方法已经成为开发大型软件的主要手段。尽管迅猛发展的Java语言对C++形成强有力的冲击,但C++语言仍然是应用最广泛的面向对象程序设计语言之一,用在高等院校的教学和业界的软件开发中。C++适合于系统级的程序设计,如编译器设计,而Java语言是开发图形界面和跨平台程序的理想语言,二者将会并存和互补。 目前,国内有许多C++教材,它们大都包含了大量的C语言教学内容,对于已经学过C语言课程的读者来讲,这些教材显得篇幅过长,不适合在有限的课堂教学学时情况下使用。本书一开始就进入类和对象的介绍,关注面向对象的设计思想,适合于已经学过C语言课程并将开始学习C++语言的读者,对于在实际工作中需要用面向对象技术来编写C++程序的工程技术人员也很有帮助。本书要求读者具有C语言基础知识,是一本面向C++初学者的入门教材。 本书主要特点 1) 将统一建模语言UML融入到每部分学习内容中,讲解例题前,用UML类图对问题进行分析,使读者掌握用面向对象方法分析复杂问题,而不仅仅是学习面向对象语法。 2) 选取大量贴近现实和现象的例题进行讲解,其中有些例题是作者全新设计出来的,这些例题可以使读者对程序产生浓厚的兴趣,增强学习效果。每章在讲述知识点和例题后,通过一个完整的应用实例来巩固所学知识点。 3) 本书每章都有形式多样的课后习题,让读者自己动手来编写C++程序,使他们从能够看懂C++程序,到能够分析问题,并动手编写程序来解决问题,彻底解决以往“看得懂、不会编”的情况。
作者结合多年的C++教学经验,根据教学大纲精心设计并且编写了书中内容。本书依据ANSI C++标准,阐述面向对象的程序设计思想,引出必要的语法知识,详细介绍了C++语言本身。针对初学者的特点,书中结合大量实例讲解面向对象程序设计的基本概念和方法,并增加了UML类图的介绍以及STL程序设计的内容。 全书分为9章,在讲解了C++基础知识之后,引导读者深入学习类与对象、继承与派生、多态性、独立编译与命名空间、模板、输入输出流、string类以及异常处理。 本书文字流畅、概念清晰、通俗简洁,并配有多种形式的习题,适合作为大专院校面向对象程序设计课程的入门教材。
前言教学建议第1章 C++基础知识 1.1 面向对象程序设计语言 1.1.1 从C到C++ 1.1.2 Java 1.2 面向对象程序设计的基本概念 1.2.1 类 1.2.2 对象 1.2.3 封装 1.2.4 继承 1.2.5 多态性 1.3 面向对象软件的开发步骤 1.4 C++程序开发过程 1.5 UML类图 1.6 一个简单的C++程序 1.7 小结 习题第2章 类与对象 2.1 类与对象的定义 2.1.1 类的定义 2.1.2 成员函数的定义 2.1.3 类成员的访问控制 2.1.4 对象的定义 2.1.5 对象的作用域和生存期 2.2 构造函数和析构函数 2.2.1 用于初始化的构造函数 2.2.2 默认构造函数 2.2.3 拷贝构造函数 2.2.4 析构函数 2.3 this指针 2.4 静态成员 2.4.1 静态数据成员 2.4.2 静态成员函数 2.5 常成员 2.5.1 常对象 2.5.2 常数据成员 2.5.3 常成员函数 2.6 类的组合 2.7 友元函数和友元类 2.8 动态内存分配 2.8.1 new和delete 2.8.2 深拷贝与浅拷贝 2.9 应用实例—计数器 2.10 小结 习题第3章 继承与派生 3.1 基类和派生类 3.1.1 为何需要继承 3.1.2 派生类声明 3.2 派生类的访问控制 3.2.1 公有继承 3.2.2 私有继承 3.2.3 保护继承 3.3 派生类的构造函数和析构函数 3.3.1 派生类构造函数和析构函数的执行顺序 3.3.2 派生类构造函数和析构函数的构造规则 3.4 多继承 3.4.1 多继承的声明 3.4.2 多继承的构造函数和析构函数 3.4.3 二义性 3.4.4 虚基类 3.5 赋值兼容规则 3.6 应用实例—小型诊所的简单信息管理程序 3.7 小结 习题第4章 多态性 4.1 多态性概述 4.1.1 多态的分类 4.1.2 多态的实现 4.2 虚函数 4.2.1 静态联编和动态联编 4.2.2 虚函数的作用和定义 4.2.3 虚函数的使用原则 4.2.4 虚函数的访问 4.3 纯虚函数与抽象类 4.4 函数重载 4.5 运算符重载 4.5.1 运算符重载的规则 4.5.2 运算符重载为成员函数 4.5.3 运算符重载为友元函数 4.5.4 其他运算符重载 4.6 应用实例 4.7 小结 习题第5章 独立编译与命名空间 5.1 独立编译 5.1.1 C++程序的组织结构 5.1.2 编译预处理 5.2 命名空间 5.2.1 命名空间和using预编译指令 5.2.2 创建命名空间 5.2.3 无名命名空间 5.3 小结 习题第6章 模板 6.1 模板的概念 6.2 函数模板 6.2.1 函数模板的定义 6.2.2 函数模板的实例化 6.3 类模板 6.3.1 类模板的定义 6.3.2 类模板的实例化 6.3.3 类模板的默认参数 6.4 标准模板库STL 6.5 应用实例 6.6 小结 习题第7章 输入和输出流类库 7.1 输入/输出流概念和流类库结构 7.2 无格式输入/输出 7.2.1 输出运算符“<<” 7.2.2 输入运算符“>>” 7.2.3 成员函数put()输出字符 7.2.4 成员函数get()和getline() 7.2.5 成员函数read()和write() 7.3 格式化输入/输出 7.3.1 使用ios类成员函数 7.3.2 使用操纵符 7.4 文件流操作 7.4.1 文件打开与关闭 7.4.2 文件读写 7.5 应用实例 7.6 小结 习题第8章 string类 8.1 string类对象定义 8.1.1 char型字符串 8.1.2 string型字符串定义 8.1.3 string类构造函数 8.2 string类成员函数 8.3 string类操作符 8.4 应用实例 8.5 小结 习题第9章 异常处理 9.1 异常处理基础 9.2 异常处理编程技术 9.2.1 异常处理的基本思想 9.2.2 异常处理的实现 9.2.3 异常处理规则 9.2.4 异常事件的多路捕获 9.2.5 异常处理中的构造与析构 9.2.6 异常处理核心技术——栈展开 9.3 应用实例 9.4 小结 习题附录A 实验指导附录B C++语言中的关键字参考文献
插图:类(class)是面向对象程序设计语言的基本概念,在C++中也是如此。在现实生活中,人们常常把众多的事物归纳并划分为若干类型,这是认识客观世界常用的思维方法.比如,我们把载人数量为5-7人的、各种品牌的、使用汽油或柴油的、四个轮子的汽车统称为小轿车,也就是说,从众多的具体车辆中抽象出小轿车类。再比如,我们把一所高校所有在校的、男性或女性的、各个班级的、各个专业的本科生、研究生统称为学生,可以从众多的具体学生中抽象出学生类。对事物进行分类时,依据的原则是抽象,将注意力集中在与当前目标有关的本质特征上,而忽略事物的非本质特征,进而找出这些事物的所有共同点,把具有共同性质的事物划分为一类,得到一个抽象的概念。日常生活中的汽车、房子、人、衣服等概念都是人们在长期的生产和生活实践中抽象出来的概念。面向对象方法中的“类’,是具有相同属性和服务的一组对象的集合。它为属于该类的全部对象提供了抽象的描述,其内部包括属性和行为两个主要部分。1.2.2对象对象(0bJcct)是现实世界中一个实际存在的事物,它可以是看得见、摸得到的物体(如一本书),也可以是无形的(如一项计划)。对象是构成现实世界的一个独立单位,它具有自己的静态特征(可以用某种数据来描述)和动态特征(对象所表现出来的行为或具有的功能)。比如,张三是现实世界中一个具体的人,他具有身高、体重(静态特征),能够思考和做运动(动态特征)。面向对象方法中的对象,是描述系统中某一客观事物的一个实体,它是构成系统的一个基本单位。对象由一组属性和一组行为构成。属性是用来描述对象静态特征的数据项,而行为是用来描述对象动态特征的操作序列。类与对象的关系,就像模具与产品之间的关系,一个属于某类的对象称为该类的一个实例,比如张三就是人这个类的一个实例,或者是这个类的具体表现。
《C++程序设计教程:基于案例与实验驱动》依据ANSI C++标准,阐述面向对象的程序设计思想,详细介绍了C++语言本身。书中结合大量实例讲解面向对象程序设计的基本概念和方法,并增加了UML类图的介绍以及STL程序设计的内容,同时配有多种形式的习题,并在附录中提供了实验指导书,供学生上机或测验使用。《C++程序设计教程:基于案例与实验驱动》的读者对象是计算机、电子信息类专业的学生和相关的技术人员。《C++程序设计教程:基于案例与实验驱动》特点·将统一建模语言UML融入到每部分学习内容中,讲解例题前,用UML类图对问题进行分析,使读者掌握用面向对象方法来分析复杂问题,而不仅仅是学习面向对象语法。·选取大量贴近现实事物和现象的例题进行讲解,使读者对程序产生浓厚的兴趣,增强学习动力。每章在讲述知识点和例题后,通过一个完整的应用实例来巩固所学知识点。·通过每章形式多样的课后习题,让读者自己动手来编写C++程序,彻底解决以往“看得懂、不会编”的情况。
内容简介明了而且非常实用,不说废话,所以推荐
这本书对那些已经学习过C语言的人很有帮助,许多人学完C语言之后急于学习VC,其实应该把C++的基础打牢,这本书可以做到这点。许多例子是作者精心设计的,对于想学好C++的人非常有帮助。