《C++:面向对象程序设计(第2版)/普通高等教育“十一五”国家级规划教材》全面系统地介绍了面向对象程序设计的基本思想、机制、要素和原理,详细介绍了C++面向对象程序设计技术;对MFC应用程序框架作了专门介绍,力图在介绍基本原理的同时满足动手训练的需要。书后附VisualC++6.O编译器使用方法和两套C++面向对象程序设计模拟试题,供读者学习本课程使用。《C++:面向对象程序设计(第2版)/普通高等教育“十一五”国家级规划教材》将C++的基本原理与具体实践相结合,不仅让读者对C++语言本身有深刻的了解,也为读者迅速掌握流行的VC++程序设计工具打下了良好的基础。 《C++:面向对象程序设计(第2版)/普通高等教育“十一五”国家级规划教材》取材新颖、内容丰富、可读性强,所设计的示例程序立足于方便读者观察C++相关机制的运行过程。”
李涛,四川大学教授,博士生导师。长期从事网络安全方面的研究,在IEEE会刊、中国科学、科学通报、自然科学进展等国内外重要杂志及学术会议发表论文300多篇,申请及获准国家发明专利28项,出版《计算机免疫学》、《网络安全概论》等学术专著4本,主持完成10多项国家级、省部级重大、重点项目的攻关工作,成果被分别列入国家高技术产业化示范工程,国家科技成果重点推广计划、国家重点新产品等,获省部级科技进步一等奖4次,二等奖1次,市专利奖2次。被评为教育部新世纪优秀人才(首批),国务院政府特殊津贴专家,国家计算机网络与信息安全专项计划管理专家,四川省学术和技术带头人,成都市有突出贡献的优秀专家。
第1章 C++基础知识
1.1 C++语言简介
1.1.1 C++的诞生和发展
1.1.2 c++的基本特性
1.2 C++对C的扩充
1.2.1 新的输入输出方式
1.2.2 注释、变量声明与作用域限定符
1.2.3 强制类型转换与const标识符
1.2.4 函数原型声明
1.2.5 内联函数
1.2.6 函数重载
1.2.7 带默认参数的函数
1.2.8 引用
1.2.9 运算符new和delete
1.2.1 0布尔类型
1.3 C++程序的开发过程
1.3.1 一个简单的C++程序
1.3.2 C++程序的开发
习题1
第2章 C++类和对象
2.1 面向对象程序设计方法概述
2.1.1 面向对象程序设计方法的基本概念
2.1.2 面向对象程序设计方法的基本原理
2.2 类和对象
2.2.1 类的定义
2.2.2 成员函数的实现
2.2.3 对象的创建
2.2.4 类成员的访问
2.3 构造函数和析构函数
2.3.1 构造函数
2.3.2 重载构造函数
2.3.3 带默认参数的构造函数
2.3.4 拷贝构造函数
2.3.5 析构函数
2.4 对象数组
2.5 对象指针
2.5.1 指向对象的指针
2.5.2 this指针
2.6 静态成员
2.6.1 静态数据成员
2.6.2 静态成员函数
2.7 友元关系
2.7.1 友元函数
2.7.2 友元类
2.8 共享数据的保护
2.8.1 常引用
2.8.2 常对象
2.8.3 常成员
2.9 应用实例:员工信息管理系统
习题2
第3章 继承
3.1 类的继承与派生
3.1.1 继承与派生的概念
3.I.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.5 虚基类
3.5.1 虚基类的作用
3.5.2 虚基类的初始化
3.6 组合类
3.6.1 组合类的概念
3.6.2 组合类中的构造函数
3.7 继承应用实例
3.7.1 问题描述
3.7.2 完整源程序
3.7.3 运行结果
习题3
第4章 多态性
4.1 多态性
4.2 虚函数
4.2.1 虚函数的概念
4.2.2 必须使用虚函数的例子
4.2.3 虚函数的覆盖
4.2.4 虚函数的传递性
4.2.5 虚析构函数
4.3 抽象类
4.3.1 纯虚函数
4.3.2 抽象类
4.3.3 使用抽象类的例子
4.4 函数重载
4.4.1 成员函数重载
4.4.2 全局函数重载
4.4.3 函数的默认参数
4.4.4 二义性问题
4.4.5 虚函数与函数重载的关系
4.5 运算符重载
4.5.1 运算符重载的意义
4.5.2 运算符重载的规则
4.5.3 成员和非成员运算符函数重载
4.5.4 单目和双目运算符函数重载
4.5.5 赋值运算符重载和拷贝构造函数
4.5.6 其他运算符重载
4.5.7 综合举例
习题4
第5章 模板
5.1 模板的基本概念和作用
5.2 函数模板及模板函数
5.2.1 函数模板定义及其实例化
5.2.2 重载函数模板
5.3 类模板及模板类
5.3.1 类模板定义及其实例化
5.3.2 类模板的派生
5.4 模板实例
习题5
第6章 标准模板库
6.1 标准模板库概述
6.1.1 标准模板库发展简介
6.1.2 标准模板库的主要内容
6.2 迭代器
6.2.1 迭代器的起源
6.2.2 迭代器类模板位置
6.2 _3迭代器的编程思想
6.3 函数对象
6.3.1 从函数到函数对象
6.3.2 系统函数对象类模板
6.4 常用通用容器
6.4.1 vector容器
6.4.2 list容器
6.4.3 deque容器
6.4.4 queue和stack容器
6.5 STL常用算法
6.5.1 遍历容器算法foreach()
6.5.2 查询算法find()
6.5.3 排序算法sort()
6.6 应用实例:列车调度
……
第7章 C++输入/输出
第8章 C++高级主题
第9章 MFC开发
附录
参考文献
第2章C++类和对象
2.1面向对象程序设计方法概述
面向对象程序设计方法是在结构化设计方法出现很多问题的情况下应运而生的。结构化设计方法求解问题的基本策略是从功能的角度审视问题域,它将应用程序看成实现某些特定任务的功能模块,其中子过程是实现某项具体操作的底层功能模块。在每个功能模块中,用数据结构描述待处理数据的组织形式,用算法描述具体的操作过程。然而,面对日趋复杂的应用系统,这种开发思路逐渐暴露出它的弱点以及对市场需求的不适应性,于是面向对象程序设计方法应运而生。
2.1.1面向对象程序设计方法的基本概念
1.对象
对象是人们进行研究的任何事物,从最简单的整数到复杂的飞机等均可看做对象,它是构成系统的基本单位。它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。比如,在一个商品销售系统中,商品和顾客可以是对象;在一个交通流量模拟系统中,汽车可以是对象;在抽象的数据存储结构中,堆栈和链表也可以是对象。
由于在自然界,任何一个客体都具有两个要素——属性和行为,因此一个对象往往是由一组属性和一组行为共同描述的。例如,一个电源开关可以看做一个对象,则它的外形、颜色和使用电压都可以认为是该电源开关对象的属性,而关闭或打开可以认为是电源开关对象的行为。又如,在一个学校的学生管理系统中,学生就是一个主要的对象。学生有学号、姓名、性别、所修课程以及成绩等属性,同时具有选课、考试、查询成绩等行为,因此,这些属性和行为结合在一起就可以描述出学生这个对象。
对象的每个属性都具有属性值,它们结合在一起反映对象的状态。就是说,一个对象用一组数据值来描述其状态,而通过行为可以改变其状态。例如,某个学生对象的学号为1243041475,姓名为张三,性别为男,成绩为90,那么“1243041475”就是该对象属性为“学号”的属性值,“张三”是“姓名”的属性值,“男”是“性别”的属性值,“90”是“成绩”的属性值,以上4个属性值共同反映了该学生对象的一种状态。当然,状态是可以改变的,比如通过“考试”这一行为,可以改变“成绩”的属性值。