C++开发实战.软件开发技术联盟(带详细书签) PDF 高清 下载
《C++开发实战》从初学者的角度全面介绍了使用C++进行程序开发的各种技术。在内容安排上由浅入深,让读者循序渐进地掌握编程技术;在内容讲解上结合丰富的图解和形象的比喻,帮助读者理解晦涩难懂的技术;在内容形式上附有大量的提示、技巧、说明等栏目,夯实读者编程技术,丰富编程经验。全书共分5篇20章,其中,第1篇为新手入门,主要包括绪论、数据类型、表达式与语句、判断与循环等内容;第2篇为进阶提高,主要包括数组、函数、指针和引用等内容;第3篇为核心技术,包括类和对象、继承和派生、模板、文件操作等内容;第4篇为为高级应用,主要包括预处理、STL标准模板库、程序调试等内容。前4篇最后均包含一个综合实验程序。第5篇为项目实战,包括网络通信和吃豆子游戏等内容。所有知识都结合具体实例进行介绍,对涉及的程序代码给出了详细的注释,读者可以轻松领会C++程序开发的精髓,快速提高开发技能。本书特色及丰富的学习资源包如下: 黄金学习搭配、专业学习视频、重难点精确打击、学习经验分享、学习测试诊断、有趣实践任务、专业资源库、学习排忧解难、获取源程序、提供习题答案、赠送开发案例。 本书适合有志于软件开发的初学者、高校计算机相关专业学生和毕业生,也可作为软件开发人员的参考 手册,或者高校的教学参考书。 第1篇 新手入门 1 第1章 绪论 3 1.1 C++历史背景 4 1.1.1 20世纪最伟大的发明--计算机 4 1.1.2 C++发展历程 4 1.1.3 C++发展中的杰出人物 5 1.2 Visual Studio 2010集成编译环境 6 1.2.1 安装Visual Studio 2010 6 1.2.2 卸载Visual Studio 2010 8 1.2.3 使用Visual Studio 2010创建一个C++控制台程序 9 1.2.4 编写第一个C++程序"Hello World" 11 1.3 如何使用本书代码 12 1.4 小结 12 第2章 数据类型 13 2.1 第一个C++程序 14 2.1.1 #include指令 14 2.1.2 注释 14 2.1.3 main函数 15 2.1.4 函数体 15 2.1.5 函数返回值 15 2.2 数据类型概述 15 2.3 常量及符号 16 2.3.1 整型常量 17 2.3.2 实型常量 17 2.3.3 字符常量 18 2.3.4 字符串常量 19 2.3.5 其他常量 19 2.4 变量 19 2.4.1 标识符 20 2.4.2 变量与变量声明 20 2.4.3 整型变量 21 2.4.4 实型变量 21 2.4.5 变量赋值 22 2.4.6 变量赋初值 22 2.4.7 字符变量 22 2.5 数据输入与输出 24 2.5.1 控制台屏幕 24 2.5.2 C++语言中的流 24 2.5.3 流操作的控制 26 2.6 实战 33 2.6.1 输出一个正方形 33 2.6.2 输出一个三角形 34 2.6.3 简单求和程序 34 2.6.4 数值型常量的使用 35 2.6.5 将输入的小写字符转换为大写字符 35 2.6.6 水池注水问题 36 2.7 小结 37 2.8 学习成果检验 37 第3章 表达式与语句 39 3.1 运算符 40 3.1.1 算术运算符 40 3.1.2 关系运算符 41 3.1.3 逻辑运算符 42 3.1.4 赋值运算符 43 3.1.5 位运算 44 3.1.6 移位运算符 45 3.1.7 sizeof运算符 47 3.1.8 条件运算符 48 3.1.9 逗号运算符 48 3.2 结合性和优先级 48 3.3 表达式 50 3.3.1 算术表达式 50 3.3.2 关系表达式 50 3.3.3 条件表达式 51 3.3.4 赋值表达式 51 3.3.5 逻辑表达式 51 3.3.6 逗号表达式 51 3.3.7 表达式中的类型转换 53 3.4 语句 55 3.5 实战 56 3.5.1 求1~10的累加和 56 3.5.2 求一个整数任意次方后的最后三位数 56 3.5.3 婚礼上的谎言 57 3.5.4 阿姆斯特朗数 58 3.5.5 满足abcd=(ab+cd) 2的数 59 3.5.6 最大公约数及最小公倍数 59 3.6 小结 60 3.7 学习成果检验 61 第4章 判断与循环 63 4.1 条件判断 64 4.1.1 if语句 64 4.1.2 if...else语句 66 4.1.3 嵌套的if-else语句 67 4.1.4 使用条件运算符进行判断 71 4.1.5 switch判断语句 73 4.2 循环语句 77 4.2.1 while循环语句 77 4.2.2 do...while循环 79 4.2.3 while与do...while比较 80 4.2.4 for循环语句 81 4.3 循环控制 85 4.3.1 控制循环的变量 85 4.3.2 break语句 86 4.3.3 continue语句 87 4.3.4 goto语句 88 4.4 循环嵌套 90 4.5 实战 92 4.5.1 小写字母转大写 92 4.5.2 百鸡百钱问题 92 4.5.3 判断三角形类型 93 4.5.4 简单计算器 94 4.5.5 求总数问题 95 4.5.6 加油站加油 96 4.5.7 灯塔数量 97 4.5.8 尼科彻斯定理 98 4.6 小结 99 4.7 学习成果检验 99 第5章 综合实验(1)--模拟ATM机界面程序 101 5.1 概述 102 5.2 需求分析 102 5.3 设计思路 102 5.4 详细设计 102 5.5 程序代码 106 第2篇 进阶提高 111 第6章 数组 113 6.1 一维数组 114 6.1.1 如何定义和引用一维数组 114 6.1.2 一维数组初始化 115 6.1.3 一维数组应用 116 6.2 二维数组 117 6.2.1 如何定义和引用二维数组 117 6.2.2 二维数组初始化 118 6.2.3 二维数组应用 120 6.3 多维数组 121 6.4 字符数组 121 6.4.1 如何定义和使用字符数组 121 6.4.2 字符数组初始化 122 6.4.3 字符数组的结束标志 125 6.4.4 字符数组的输入和输出 126 6.4.5 字符数组应用 128 6.5 实战 129 6.5.1 相邻元素之和 129 6.5.2 选票系统 130 6.5.3 统计学生成绩 131 6.5.4 模拟比赛打分 132 6.5.5 矩阵的转置 133 6.5.6 设计魔方阵 135 6.5.7 统计各种字符个数 136 6.6 小结 137 6.7 学习成果检验 137 第7章 函数 139 7.1 函数概述 140 7.2 函数的定义 142 7.2.1 无参函数 142 7.2.2 有参函数 142 7.2.3 空函数 143 7.3 返回语句 143 7.3.1 从函数返回 143 7.3.2 返回值 144 7.4 函数参数 145 7.4.1 形式参数与实际参数 145 7.4.2 数组作函数参数 147 7.4.3 main参数 151 7.5 函数的调用 153 7.5.1 函数调用方式 153 7.5.2 嵌套调用 153 7.5.3 递归调用 155 7.6 内部函数和外部函数 158 7.6.1 内部函数 158 7.6.2 外部函数 158 7.7 局部变量和全局变量 160 7.7.1 局部变量 160 7.7.2 全局变量 161 7.8 实战 163 7.8.1 求数组元素中的最小值 163 7.8.2 求直角三角形斜边 165 7.8.3 小数分离 165 7.8.4 判断素数 166 7.8.5 递归解决分鱼问题 167 7.8.6 字母检索 168 7.8.7 求字符串中字符的个数 169 7.8.8 打鱼晒网问题 170 7.9 小结 172 7.10 学习成果检验 172 第8章 指针和引用 173 8.1 指针 174 8.1.1 变量与指针 174 8.1.2 指针运算符和取地址运算符 177 8.1.3 指针运算 179 8.2 指针与数组 180 8.2.1 数组的存储 180 8.2.2 指针与一维数组 180 8.2.3 指针与二维数组 182 8.2.4 指针与字符数组 186 8.3 指向函数的指针 187 8.4 指针与安全 188 8.4.1 内存的分配方式 188 8.4.2 内存安全 190 8.5 引用 193 8.5.1 左值与右值 193 8.5.2 引用的概述 194 8.5.3 右值引用 195 8.6 函数与引用 196 8.6.1 使用引用传递参数 196 8.6.2 指针与引用 197 8.6.3 右值引用传递参数 199 8.7 实战 200 8.7.1 使用左值引用实现整数排序 200 8.7.2 查找成绩不及格的学生 201 8.7.3 指针实现冒泡排序 202 8.7.4 使用指针插入元素 203 8.7.5 使用指针的指针输出字符串 204 8.7.6 为二维数组动态分配内存并释放 205 8.7.7 使用右值引用转换二进制为十进制 206 8.8 小结 207 8.9 学习成果检验 208 第9章 综合实验(2)--猜数字游戏 209 9.1 概述 210 9.2 需求分析 210 9.3 系统设计 210 9.3.1 设计目标 210 9.3.2 开发及运行环境 210 9.4 程序预览 211 9.5 设计思路 213 9.6 文件引用 213 9.7 主要功能实现 213 9.7.1 主函数 213 9.7.2 猜数字 215 9.7.3 光标定位 217 第3篇 核心技术 219 第10章 类和对象 221 10.1 C++类 222 10.1.1 类概述 222 10.1.2 类的声明与定义 222 10.1.3 类的实现 224 10.1.4 对象的声明 228 10.2 构造函数 231 10.2.1 构造函数概述 231 10.2.2 复制构造函数 233 10.3 析构函数 234 10.4 类成员 236 10.4.1 访问类成员 236 10.4.2 内联成员函数 238 10.4.3 静态类成员 239 10.4.4 隐藏的this指针 241 10.4.5 嵌套类 243 10.4.6 局部类 244 10.5 友元 245 10.5.1 友元概述 245 10.5.2 友元类 247 10.5.3 友元方法 248 10.6 命名空间 251 10.6.1 使用命名空间 251 10.6.2 定义命名空间 251 10.6.3 在多个文件中定义命名空间 254 10.6.4 定义嵌套的命名空间 255 10.6.5 定义未命名的命名空间 257 10.7 实战 257 10.7.1 找出最高分 257 10.7.2 计算平面两点间距离 260 10.7.3 创建简单单向链表 261 10.7.4 创建简单双向链表 265 10.7.5 单向链表的逆置 269 10.7.6 括号匹配检测 272 10.8 小结 275 10.9 学习成果检验 275 第11章 继承和派生 277 11.1 继承 278 11.1.1 类的继承 278 11.1.2 继承后可访问性 280 11.1.3 构造函数访问顺序 283 11.1.4 子类隐藏父类的成员函数 284 11.2 重载运算符 287 11.2.1 重载运算符的必要性 288 11.2.2 重载运算符的形式与规则 289 11.2.3 重载运算符的运算 291 11.2.4 转换运算符 293 11.3 多重继承 295 11.3.1 多重继承定义 295 11.3.2 二义性 296 11.3.3 多重继承的构造顺序 297 11.4 多态 299 11.4.1 虚函数概述 299 11.4.2 利用虚函数实现动态绑定 299 11.4.3 虚继承 301 11.5 抽象类 303 11.5.1 纯虚函数 303 11.5.2 实现抽象类中的成员函数 305 11.6 结构体 306 11.7 实战 307 11.7.1 接口的实现 307 11.7.2 二维方阵的加减运算 310 11.7.3 成员函数重写与虚函数继承的区别 312 11.7.4 善用类指针 314 11.7.5 链表合并 316 11.7.6 柱状三维图形的体积 318 11.8 小结 321 11.9 学习成果检验 321 第12章 模板 323 12.1 函数模板 324 12.1.1 函数模板的定义 324 12.1.2 函数模板的作用 325 12.1.3 重载函数模板 327 12.2 类模板 328 12.2.1 类模板的定义与声明 328 12.2.2 简单类模板 330 12.2.3 默认模板参数 331 12.2.4 为具体类型的参数提供默认值 332 12.2.5 有界数组模板 333 12.3 模板的使用 335 12.3.1 定制类模板 335 12.3.2 定制类模板成员函数 337 12.3.3 模板部分定制 338 12.4 链表类模板 340 12.4.1 链表 340 12.4.2 使用链表类模板 342 12.4.3 类模板的静态数据成员 345 12.5 实战 347 12.5.1 使用函数模板回收动态分配的内存 347 12.5.2 三维坐标类模板 348 12.5.3 多继承与函数模板 349 12.5.4 实现链表模板的插入 350 12.5.5 选择排序函数模板 351 12.6 小结 353 12.7 学习成果检验 354 第13章 文件操作 355 13.1 文件流 356 13.1.1 C++中的流类库 356 13.1.2 类库的使用 356 13.1.3 ios类中的枚举常量 357 13.1.4 流的输入/输出 357 13.2 文件打开 358 13.2.1 打开方式 358 13.2.2 默认打开模式 359 13.2.3 打开文件同时创建文件 360 13.3 文件的读写 361 13.3.1 文件流 361 13.3.2 写文本文件 363 13.3.3 读取文本文件 364 13.3.4 二进制文件的读/写 365 13.3.5 实现文件复制 366 13.4 文件指针移动操作 368 13.4.1 文件错误与状态 368 13.4.2 文件的追加 368 13.4.3 文件结尾的判断 370 13.4.4 在指定位置读/写文件 371 13.5 文件与流的关联和分离 373 13.6 删除文件 374 13.7 实战 375 13.7.1 合并两个文件信息 375 13.7.2 文件复制 376 13.7.3 文件加密 377 13.7.4 使用销毁的手段保护文件内容 379 13.7.5 在文件中查找关键词出现的次数 380 13.8 小结 382 13.9 学习成果检验 382 第14章 综合实验(3)--图书管理系统 383 14.1 系统设计 384 14.1.1 需求分析 384 14.1.2 系统目标 384 14.1.3 系统功能结构 384 14.2 图书类 385 14.3 主程序 389 14.4 添加图书 393 14.5 显示图书信息 394 14.6 删除图书 396 14.7 小结 397 第4篇 高级应用 399 第15章 预处理 401 15.1 本章知识体系 402 15.2 不带参数的宏定义 402 15.3 带参数的宏定义 404 15.4 #include命令 405 15.5 条件编译 408 15.5.1 #if命令 408 15.5.2 #ifdef及#ifndef命令 410 15.5.3 #undef命令 412 15.5.4 #line命令 412 15.5.5 #pragma命令 413 15.6 实战 413 15.6.1 利用宏计算两个数的乘积 413 15.6.2 利用宏求3个数中的最小数 414 15.6.3 使用带参数的宏求圆面积 415 15.6.4 利用文件包含设计输出模式 415 15.6.5 使用条件编译隐藏密码 416 15.7 疑难解惑 417 15.7.1 C++语言中包括哪些预处理功能 417 15.7.2 使用宏时需要注意些什么 417 15.7.3 文件包含可以嵌套吗 418 15.8 小结 418 15.9 学习成果检验 418 第16章 STL标准模板库 419 16.1 序列容器 420 16.1.1 向量类模板 420 16.1.2 双端队列类模板 422 16.1.3 链表类模板 424 16.2 结合容器 426 16.2.1 set类模板 426 16.2.2 multiset类模板 431 16.2.3 map类模板 435 16.2.4 multimap类模板 437 16.3 算法 438 16.3.1 非修正序列算法 438 16.3.2 修正序列算法 441 16.3.3 排序算法 445 16.3.4 数值算法 451 16.4 迭代器 455 16.4.1 输出迭代器 455 16.4.2 输入迭代器 456 16.4.3 前向迭代器 457 16.4.4 双向迭代器 457 16.4.5 随机访问迭代器 458 16.5 实战 459 16.5.1 使用链表类模板加载学生类实例 459 16.5.2 按索引排序 460 16.5.3 使用并集算法合并容器 463 16.5.4 利用容器算法洗牌 466 16.5.5 筛选过期的药品 468 16.6 小结 470 16.7 学习成果检验 470 第17章 程序调试 471 17.1 选择正确的调试方法 472 17.2 程序错误常见的4种类型 472 17.2.1 语法错误 472 17.2.2 连接错误 473 17.2.3 运行时错误 473 17.2.4 逻辑错误 474 17.3 调试工具的使用 475 17.3.1 创建调试程序 475 17.3.2 进入调试状态 476 17.3.3 监视窗口 477 17.3.4 调用堆栈窗口 477 17.3.5 内存窗口 478 17.3.6 变量窗口 478 17.3.7 寄存器窗口 478 17.3.8 反汇编窗口 479 17.4 调试的基本应用 479 17.4.1 变量的跟踪与查看 479 17.4.2 位置断点的使用 480 17.5 小结 481 第18章 综合实验(4)--商品销售系统 483 18.1 商品类的设计 484 18.2 销售系统的设计 485 18.3 销售记录功能 497 18.4 小结 502 第5篇 项目实战 503 第19章 网络通信 505 19.1 TCP/IP协议 506 19.1.1 OSI参考模型 506 19.1.2 TCP/IP参考模型 506 19.1.3 IP地址 507 19.1.4 数据包格式 508 19.2 套接字 510 19.2.1 Winsocket套接字 510 19.2.2 Winsocket的使用 510 19.2.3 套接字阻塞模式 515 19.2.4 字节顺序 515 19.2.5 面向连接流 516 19.2.6 面向无连接流 516 19.3 简单协议通信 517 19.3.1 服务端 517 19.3.2 客户端 520 19.3.3 实例的运行 521 19.4 小结 521 第20章 吃豆子游戏 523 20.1 Windows应用程序 524 20.1.1 建立Windows应用程序 524 20.1.2 WinMain函数 526 20.1.3 Windows消息循环 529 20.1.4 常用绘图GDI 532 20.2 制作PacMan 535 20.2.1 PacMan程序框架初步分析 535 20.2.2 碰撞检测的实现 538 20.2.3 地图类的设计 542 20.2.4 数据更新 545 20.2.5 绘图 553 20.2.6 窗口设计 559 20.3 小结 566