《C++程序设计》根据教育部非计算机专业计算机基础课程教学指导分委员会提出的《高等学校非计算机专业计算机基础课程教学基本要求》中的关于“程序设计”的课程教学要求编写。全书以面向对象的编程思想为主线,主要讲解程序设计基础知识、类与对象的基本概念、继承与多态、输入/输出流以及泛型程序设计等内容。《C++程序设计》可作为高等院校“程序设计”课程的教材使用,也可作为学习程序设计的自学参考书和培训教材。
工业和信息化普通高等教育“十二五”规划教材立项项目;概念阐述注意演绎与归纳,案例讲解侧重方法与应用,编程思想兼顾理论与实践。 《C++程序设计》是C++程序设计的入门教材,基于作者多年程序设计方面的教学与科研成果,结合国内外该领域的最新进展,侧重于案例讲解和方法应用,编写而成。书中对各重要概念都给予了明确解释,注重理论和应用的结合。同时,讲解概念时注意演绎和归纳,特别总结了C++程序设计学习的过程中容易忽视的错误细节。 书中涵盖的主要内容: ·面向对象程序设计方法及C++语言介绍; ·对象的属性描述; ·对象的功能描述; ·类的概念及继承结构。
第1章 程序设计方法和c++语言概述
1.1 程序编写过程
1.2 面向过程程序设计方法
1.3 面向对象程序设计方法
1.4 c++语言的发展
1.5 c++语言程序的开发过程
1.6 一个简单的程序
本章小结
习题
第2章 数据类型、运算符和表达式
2.1 数据类型
2.2 常量和变量
2.2.1 c++的符号系统
2.2.2 c++的常量
2.2.3 c++的变量
2.3 运算符和表达式
2.3.1 算术运算符和算术表达式
2.3.2 赋值运算符和赋值表达式
2.3.3 关系运算符和关系表达式
2.3.4 逻辑运算符和逻辑表达式
2.3.5 位运算符和位运算表达式
2.3.6 条件运算符和条件表达式
2.3.7 其他运算符
2.4 数据类型转换
2.4.1 自动类型转换
2.4.2 强制类型转换
2.4.3 赋值表达式的类型转换
2.5 基本输入输出
2.5.1 标准输入流和标准输出流
2.5.2 io流的格式控制
2.6 c++的语句类型
2.6.1 说明性语句
2.6.2 可执行语句
本章小结
习题
第3章 c++控制语句
3.1 顺序结构程序设计
3.2 分支结构程序设计
3.2.1 if分支语句
3.2.2 if语句的嵌套
3.2.3 switch语句
3.3 循环结构程序设计
3.3.1 while语句
3.3.2 do...while语句
3.3.3 for语句
3.3.4 3种循环语句的比较
3.3.5 循环嵌套
3.3.6 break和continue语句
3.4 程序举例
本章小结
习题
第4章 数组
4.1 概述
4.2 一维数组
4.2.1 一维数组定义和初始化
4.2.2 一维数组元素的引用
4.3 二维数组
4.3.1 二维数组定义和初始化
4.3.2 二维数组元素的引用
4.4 字符数组与字符串
4.4.1 字符数组的定义和初始化
4.4.2 字符数组的引用
4.5 数组应用举例
4.5.1 一维数组应用举例
4.5.2 二维数组应用举例
4.5.3 字符数组应用举例
4.5.4 综合应用举例
本章小结
习题
第5章 函数与预处理
5.1 概述
5.1.1 函数简介
5.1.2 函数的种类
5.2 函数定义及调用
5.2.1 函数的定义
5.2.2 函数的调用
5.2.3 函数参数传递与返回值
5.2.4 函数的嵌套调用
5.2.5 函数原型声明
5.3 c++中的特殊函数
5.3.1 重载函数
5.3.2 内联函数
5.3.3 具有默认参数值的函数
5.4 函数模板
5.4.1 函数模板的定义
5.4.2 重载函数模板
5.5 局部变量和全局变量
5.5.1 局部作用域和局部变量
5.5.2 全局作用域和全局变量
5.6 变量的生存期和存储类别
5.6.1 变量的生存期
5.6.2 变量的存储类别
5.7 编译预处理
5.7.1 宏定义
5.7.2 文件包含
5.7.3 条件编译
本章小结
习题
第6章 指针和引用
6.1 指针的概念
6.1.1 指针和指针变量
6.1.2 指针变量的定义
6.1.3 指针的基本运算
6.1.4 指针作为函数参数
6.2 指针与数组
6.2.1 指针与一维数组
6.2.2 指针与二维数组
6.2.3 指向字符串的指针变量
6.2.4 指针数组
6.2.5 多级指针
6.3 指针和函数
6.3.1 指针型函数
6.3.2 用函数指针调用函数
6.3.3 用指向函数的指针作函数参数
6.3.4 带参数的main()函数
6.4 动态存储分配
6.4.1 内存的动态分配
6.4.2 动态内存分配操作符
6.5 引用
6.5.1 引用的概念
6.5.2 引用的操作
6.5.3 不能被定义引用的情况
6.5.4 函数参数中引用的传递
6.5.5 用引用返回多个值
6.5.6 用函数返回引用
6.5.7 const引用
本章小结
习题
第7章 其他自定义数据类型
7.1 结构体类型
7.1.1 结构体类型的定义
7.1.2 结构体类型变量的定义及其初始化
7.1.3 结构体类型的使用
7.2 枚举类型
7.3 共用体类型
本章小结
习题
第8章 类与对象
8.1 类的概念
8.2 类的定义
8.3 对象的定义
8.4 类的成员函数
8.5 类的访问属性
8.6 对象的使用
8.6.1 对象指针
8.6.2 对象引用
8.6.3 this指针
8.6.4 对象数组
8.6.5 普通对象做函数参数
8.6.6 对象指针做函数参数
8.6.7 对象引用做函数参数
8.7 构造函数
8.8 析构函数
8.9 拷贝构造函数
8.1 浅拷贝和深拷贝
8.11 静态成员
8.11.1 静态成员数据
8.11.2 静态成员函数
8.12 友元
8.12.1 友元函数
8.12.2 友元类
8.13 常对象
8.14 常成员
8.14.1 常成员数据
8.14.2 常成员函数
8.15 组合关系
8.16 类模板
本章小结
习题
第9章 继承与派生
第10章 多态性与虚函数
第11章 运算符重载
第12章 标准模板库
第13章 输入输出流
第14章 异常处理
附录a c++语言中运算符的优先级和结合性
附录b ascii码表
附录c c++常用函数
参考文献
面向过程程序设计方法又称为结构化程序设计方法。其基本观点是:使用3种基本结构(即顺序结构、选择结构和循环结构)强调模块的单人和单出。
采用面向过程程序设计方法来认识现实世界问题,其基本的思维粒度是过程。所谓过程,指的是一个功能的完整描述。在没有特别说明的情况下,本书中的过程和功能是等价的说法。例如,开发一个学生选课管理信息系统时,经过需求调研后,发现该系统的基本功能如下。
教师信息的登记,例如,当学校新增教师时,需要该功能。
教师信息的修改,例如,当教师转移工作岗位时,需要该功能。
教师信息的删除,例如,当学校开除教师时,需要该功能。
教师信息的打印,例如,当学校存档教师档案时,需要该功能。
教师查询学生名单,例如,当教师需要查看授课学生名单时,需要根据课程查询学生名单的功能。
学生信息的登记,例如,当新生人学时,需要该功能。
学生信息的修改,例如,当学生转系时,需要该功能。
学生信息的删除,例如,当学生毕业时,需要该功能。
注意,这种删除只是一种临时性的删除,经过删除后的学生信息可以实现归档处理。
学生信息的打印,例如,当学校存档学生档案时,需要该功能。
学生查询教师名单,例如,当学生选课需要查看某个课程的授课教师时,需要该功能。
课程信息的增加,例如,当学校开设一门新课时,需要该功能。
课程信息的修改,例如,当需要变更课程名称时,需要该功能。
课程信息的删除,例如,当学校删除一门旧课时,需要该功能。
课程信息的打印,例如,当学生需要某个课程详细情况时,需要该功能。
查询教师和学生名单,例如,当管理员需要根据课程获知该课程的教师和学生的详细信息时,需要该功能。
设定必修课,系统根据学生的专业和年级等信息设定其必修课。
选择选修课,学生根据自己的爱好和发展等信息选择其选修课。
选择教师,学生根据自己的喜好选择必修课和选修课的授课教师。
学生选课管理信息系统的功能结构,如图1.2 所示。面向过程程序设计方法强调描述一个系统时以该系统包含的基本功能为基础,一个过程对应一个功能。
……