作者简介
皮德常,男,1971年11月生,博士,副教授,硕士生导师。于1994年、1997、2002年在南京航空航天获得学士、硕士和博士学位。近几年来,先后发表科研论文42篇,获南京航空航天教学奖4次,教学观摩奖1次;主持和参与国家自然科学基金3项、江苏省自然科学基金和国家“863”计划各1项;先后获得省部级科技进步二等奖2次、三等奖2次;在清华出版社、国防工业出版社和机械工业出版社出版计算机专业书5本。
目录
前言<br/>教学建议<br/>第1章 C++程序设计基础 1<br/>1.1 为什么要学习C++程序设计 1<br/>1.2 简单的C++程序举例 2<br/>1.3 注释方法 3<br/>1.4 编程风格 3<br/>1.5 C++程序的词法单位 3<br/>1.5.1 C++程序中的字符 4<br/>1.5.2 标识符 4<br/>1.5.3 关键字 4<br/>1.6 C++的基本数据类型 5<br/>1.7 变量和常量 6<br/>1.7.1 变量 6<br/>1.7.2 文字常量 7<br/>1.7.3 符号常量 8<br/>1.7.4 常变量 9<br/>1.8 运算符和表达式 9<br/>1.8.1 算术运算符和算术表达式 9<br/>1.8.2 初识运算符的优先级和结合性 9<br/>1.8.3 赋值运算符和赋值表达式 10<br/>1.8.4 自增、自减运算符 11<br/>1.8.5 关系运算符和关系表达式 11<br/>1.8.6 逻辑运算符和逻辑表达式 12<br/>1.8.7 位运算符和位表达式 13<br/>1.8.8 逗号运算符和逗号表达式 15<br/>1.8.9 sizeof运算符 15<br/>1.8.10 C++的运算符优先级和结合性 16<br/>1.9 语句 16<br/>1.10 类型转换 17<br/>1.10.1 赋值时的类型转换 17<br/>1.10.2 混合运算时的类型转换 18<br/>1.10.3 强制类型转换 19<br/>1.11 简单的输出和输入方法 19<br/>1.11.1 cout对象和cin对象 19<br/>1.11.2 格式化输出 22<br/>1.11.3 采用函数成员实现格式化输出 24<br/>1.11.4 对函数成员的初步讨论 26<br/>1.11.5 指定输入域宽 26<br/>1.11.6 读取一行 27<br/>1.11.7 读取一个字符 27<br/>1.11.8 读取字符时易出错的地方 28<br/>1.12 枚举类型 29<br/>1.12.1 枚举类型的定义 29<br/>1.12.2 枚举类型的变量 29<br/>1.12.3 枚举类型的应用 30<br/>思考与练习 31<br/>第2章 C++的流程控制 32<br/>2.1 算法的基本概念和表示方法 32<br/>2.1.1 算法的基本概念 32<br/>2.1.2 算法的表示 32<br/>2.1.3 算法的三种基本结构 33<br/>2.2 选择结构程序设计 34<br/>2.2.1 基本的if语句 34<br/>2.2.2 嵌套的if语句 36<br/>2.2.3 条件运算符 38<br/>2.2.4 switch语句 39<br/>2.3 循环结构程序设计 41<br/>2.3.1 while循环 41<br/>2.3.2 do-while循环 42<br/>2.3.3 for循环 42<br/>2.3.4 循环嵌套 44<br/>2.3.5 break语句 45<br/>2.3.6 continue语句 46<br/>2.3.7 应该少用的goto语句 47<br/>2.4 程序设计应用举例 47<br/>思考与练习 51<br/>第3章 函数 54<br/>3.1 函数的定义和调用 54<br/>3.1.1 概述 54<br/>3.1.2 定义函数 54<br/>3.1.3 调用函数 55<br/>3.2 函数的声明 57<br/>3.3 函数的参数传递和返回值 58<br/>3.3.1 函数参数的传递方式 58<br/>3.3.2 函数的返回值 59<br/>3.4 局部变量和全局变量 61<br/>3.4.1 内存存储区的布局 61<br/>3.4.2 局部变量 62<br/>3.4.3 全局变量 62<br/>3.4.4 局部变量与栈 63<br/>3.5 变量的存储类别 64<br/>3.5.1 auto修饰的变量 64<br/>3.5.2 register修饰的变量 65<br/>3.5.3 static修饰的变量 65<br/>3.5.4 extern修饰的变量 66<br/>3.6 默认参数 68<br/>3.7 引用做参数 70<br/>3.8 函数重载 71<br/>3.9 函数模板 74<br/>3.9.1 从函数重载到函数模板 74<br/>3.9.2 定义函数模板的方法 77<br/>3.9.3 函数模板重载 77<br/>3.10 内联函数 78<br/>3.11 函数的递归调用 79<br/>3.12 函数的调试方法 84<br/>3.13 编译预处理 85<br/>3.13.1 宏定义 85<br/>3.13.2 文件包含 87<br/>3.13.3 条件编译 87<br/>思考与练习 89<br/>第4章 数组 92<br/>4.1 一维数组 92<br/>4.1.1 一维数组的定义和应用 92<br/>4.1.2 引用一维数组元素 93<br/>4.1.3 数组无越界检查 93<br/>4.1.4 数组初始化 93<br/>4.2 多维数组 95<br/>4.2.1 二维数组的定义 95<br/>4.2.2 二维数组的初始化 95<br/>4.2.3 引用二维数组元素 96<br/>4.3 数组做函数参数 97<br/>4.3.1 数组元素做函数参数 97<br/>4.3.2 数组名做函数参数 98<br/>4.4 常用算法举例 99<br/>4.5 字符数组与字符串 110<br/>4.5.1 字符数组的定义 110<br/>4.5.2 字符数组的初始化 111<br/>4.5.3 字符串 111<br/>4.5.4 字符数组的输入和输出 112<br/>4.6 处理字符和字符串 113<br/>4.6.1 处理字符的宏 113<br/>4.6.2 处理C风格字符串的函数 114<br/>4.6.3 自定义字符串处理函数 117<br/>思考与练习 119<br/>第5章 指针 120<br/>5.1 指针的概念 120<br/>5.2 指针变量 120<br/>5.2.1 定义指针变量 120<br/>5.2.2 运算符&和* 121<br/>5.2.3 引用指针变量 122<br/>5.3 指针与数组 124<br/>5.3.1 指向数组元素的指针 124<br/>5.3.2 指针的运算 125<br/>5.3.3 二维数组与指针 127<br/>5.4 指针与函数 131<br/>5.4.1 基本类型的变量做函数形参 131<br/>5.4.2 引用做函数形参 132<br/>5.4.3 指针变量做函数形参 133<br/>5.4.4 返回指针的函数 135<br/>5.4.5 指向函数的指针 137<br/>5.5 指针数组与指向指针的指针 138<br/>5.5.1 指针数组 138<br/>5.5.2 main函数的参数 141<br/>5.5.3 指向指针的指针 141<br/>5.5.4 再次讨论main函数的参数 142<br/>5.6 内存的动态分配和释放 143<br/>5.7 void和const修饰指针变量 146<br/>5.7.1 void修饰指针 146<br/>5.7.2 const修饰指针 147<br/>5.8 对容易混淆概念的总结 148<br/>思考与练习 150<br/>第6章 结构体与链表 153<br/>6.1 抽象数据类型 153<br/>6.2 结构体的定义及应用 153<br/>6.2.1 定义结构体类型 153<br/>6.2.2 定义结构体类型的变量 154<br/>6.2.3 初始化结构体类型的变量 156<br/>6.2.4 结构体类型变量及其成员的引用 156<br/>6.2.5 结构体数组与指针 159<br/>6.3 用typedef定义类型 161<br/>6.4 单向链表 162<br/>6.4.1 链表的概念 162<br/>6.4.2 带头结点的单向链表常用算法 164<br/>思考与练习 169<br/>第7章 文件操作 170<br/>7.1 文件的基本概念 170<br/>7.1.1 文件命名的原则 170<br/>7.1.2 使用文件的基本过程 170<br/>7.1.3 文件流类型 170<br/>7.2 打开文件和关闭文件 171<br/>7.2.1 打开文件 171<br/>7.2.2 文件的打开模式 172<br/>7.2.3 定义流对象时打开文件 173<br/>7.2.4 测试文件打开是否失败 173<br/>7.2.5 关闭文件 174<br/>7.3 采用流操作符读写文件 174<br/>7.3.1 采用“<<”操作符写文件 174<br/>7.3.2 格式化输出在写文件中的应用 176<br/>7.3.3 采用“>>”操作符从文件读数据 177<br/>7.3.4 检测文件结束 178<br/>7.4 流对象做参数 179<br/>7.5 出错检测 181<br/>7.6 采用函数成员读写文件 182<br/>7.6.1 采用“>>”操作符读文件的缺陷 183<br/>7.6.2 采用函数getline读文件 183<br/>7.6.3 采用函数get读文件 185<br/>7.6.4 采用函数put写文件 186<br/>7.7 多文件操作 186<br/>7.8 二进制文件 188<br/>7.8.1 二进制文件的操作 188<br/>7.8.2 读写结构体记录 189<br/>7.9 随机访问文件 192<br/>7.9.1 顺序访问文件的缺陷 192<br/>7.9.2 定位函数seekp和seekg 192<br/>7.9.3 返回位置函数tellp和tellg 195<br/>7.10 输入/输出二进制文件综合举例 196<br/>思考与练习 199<br/>第8章 类的基础部分 201<br/>8.1 面向过程程序设计与面向对象程序设计的区别 201<br/>8.1.1 面向过程程序设计的缺陷 201<br/>8.1.2 面向对象程序设计的基本思想 201<br/>8.2 类的基本概念 203<br/>8.3 定义函数成员 205<br/>8.4 定义对象 206<br/>8.4.1 访问对象的成员 206<br/>8.4.2 指向对象的指针 206<br/>8.4.3 引入私有成员的原因 208<br/>8.5 类的多文件组织 208<br/>8.6 私有函数成员的作用 210<br/>8.7 内联函数 211<br/>8.8 构造函数和析构函数 212<br/>8.8.1 构造函数 213<br/>8.8.2 析构函数 215<br/>8.8.3 带参构造函数 216<br/>8.8.4 构造函数应用举例——输入有效的对象 218<br/>8.8.5 重载构造函数 220<br/>8.8.6 默认构造函数的表现形式 221<br/>8.9 对象数组 222<br/>8.10 类的应用举例 225<br/>8.11 抽象数组类型 229<br/>8.11.1 创建抽象数组类型 229<br/>8.11.2 扩充抽象数组类型 231<br/>思考与练习 235<br/>第9章 类的高级部分 236<br/>9.1 静态成员 236<br/>9.1.1 静态数据成员 236<br/>9.1.2 静态函数成员 239<br/>9.2 友元函数 241<br/>9.2.1 外部函数作为类的友元 241<br/>9.2.2 类的成员函数作为另一个类的友元 242<br/>9.2.3 一个类作为另一个类的友元 245<br/>9.3 对象赋值问题 246<br/>9.4 拷贝构造函数 247<br/>9.4.1 默认的拷贝构造函数 249<br/>9.4.2 调用拷贝构造函数的情况 249<br/>9.5 运算符重载 252<br/>9.5.1 重载赋值运算符 252<br/>9.5.2 this指针 254<br/>9.5.3 重载双目算术运算符 257<br/>9.5.4 重载单目算术运算符 259<br/>9.5.5 重载关系运算符 260<br/>9.5.6 重载流运算符“<<”和“>>” 260<br/>9.5.7 重载类型转换运算符 262<br/>9.5.8 重载运算符“[ ]” 266<br/>9.5.9 重载运算符时要注意的问题 270<br/>9.5.10 运算符重载综合举例—自定义string类 271<br/>9.6 对象组合 278<br/>思考与练习 279<br/>第10章 继承、多态和虚函数 281<br/>10.1 继承 281<br/>10.2 保护成员和类的访问 285<br/>10.3 构造函数和析构函数 288<br/>10.3.1 默认构造函数和析构函数的调用 288<br/>10.3.2 向基类的构造函数传参数 289<br/>10.3.3 初始化列表的作用 291<br/>10.4 覆盖基类的函数成员 292<br/>10.5 虚函数 295<br/>10.6 纯虚函数和抽象类 298<br/>10.6.1 纯虚函数 298<br/>10.6.2 抽象类 298<br/>10.6.3 指向基类的指针 301<br/>10.7 多重继承 302<br/>10.8 多继承 303<br/>10.9 类模板 306<br/>10.9.1 定义类模板的方法 306<br/>10.9.2 定义类模板的对象 308<br/>10.9.3 类模板与继承 310<br/>思考与练习 312<br/>第11章 异常处理 315<br/>11.1 异常 315<br/>11.1.1 抛出异常 315<br/>11.1.2 处理异常 316<br/>11.2 基于对象的异常处理 317<br/>11.3 捕捉多种类型的异常 319<br/>11.4 通过异常对象获取异常信息 321<br/>11.5 再次抛出异常 322<br/>思考与练习 323<br/>第12章 数据库程序设计 324<br/>12.1 数据库简介 324<br/>12.2 SQL语句 324<br/>12.2.1 定义表 325<br/>12.2.2 查询 325<br/>12.2.3 插入 325<br/>12.2.4 删除 325<br/>12.2.5 修改 326<br/>12.3 数据库连接 326<br/>12.3.1 创建数据表 326<br/>12.3.2 配置Visual Studio 2015相关环境 326<br/>12.4 数据库编程中的基本操作 329<br/>12.4.1 数据库编程的基本过程 329<br/>12.4.2 数据库查询 329<br/>12.4.3 插入记录 331<br/>12.4.4 修改记录 333<br/>12.4.5 删除记录 335<br/>思考与练习 337<br/>课程设计 338<br/>参考文献 342
内容摘要
以“程序设计”为主线,从材料取舍、内容表达方式、实例选取到习题和课程设计配置都以读者掌握“程序设计”的基本概念、方法和技巧为重点,并融入了作者多年的C++教学经验和软件工程实践经验。
以下为对购买帮助不大的评价