书籍详情

C++高级编程

C++高级编程

作者:(美)Nicholas A.Solter,(美)Scott J.Kleper著;刘鑫,杨健康等译;刘鑫译

出版社:机械工业出版社

出版时间:2006-01-01

ISBN:9787111177784

定价:¥88.00

购买这本书可以去
内容简介
  本书既系统全面又突出重点,作者从C++基础知识讲起,始终着眼于C++语言的编程实践,提供了大量实践示例和解决方案,包括如何更好地实现重用、如何有效地测试和调试等C++专业人员常用的一些技术与方法,还提供了一些鲜为人知的、能大大简化工作的C++语言特性;最后,还配有大量可重用的编码模式,并在附录中提供C++面试宝典作为开发人员的实用指南。本书面向进阶C++的初学者,以及那些想把C++水平提高到专业水准的程序员和开发人员。本书主要内容:● 不同的编程方法和高质量的编程风格● 充分利用C++完成大型软件开发的各种方法● 确保无错代码的方法● 认识面向对象设计● 使用库和模式来提高编程效率、提高编程质量的若干方法● C++中管理内存的最佳方法● 输入/输出技术
作者简介
  NicholasA.Solter现就职于SunMicrosystems公司,曾在斯坦福大学攻读计算机科学专业,获得理学学士和理学硕士学位。他具有丰富的C/C++编程经验和计算机游戏开发经历,并作为助理教授在Fullerton学院讲授过一年C++课程。ScottJ.KleperReactivity公司的高级软件工程师。在初中就开始了他的编程生涯,用BASIC为TandyTRS-80编写过一些冒险游戏。在斯坦福大学就读期间,他担任过程序设计入门和面向对象程序设计等多门课程的助教;并获得了计算机科学的理学学士和硕士学位。毕业后致力于人机交互领域,担任过多家公司开发小组的首席工程师。
目录
译者序
前言
作者简介
第一部分专业C+十程序设计概述
第1章C++快速入门.
1.1C++基础
1.1.1必不可少的"Hello,World"
1.1.2命名空间
1.1.3变量
1.4操作符
1.1.5类型
1.1.6条件语句
1.1.7循环
1.1.8数组
1.1.9函数
1.1.10结束语
1.2C++进阶
1.2.1指针和动态内存
1.2.2C++中的字符串
1.2.3引用
1.2.4异常
1.2.5const的多重用途
1.3作为一种面向对象语言的C++
1.4你的第一个实用的C十十程序
1.4,1一个员工记录系统
1.4.2Employee类
1.4.3Database类
1.4.4用户界面
1.4.5对程序的评价
1.5小结
第2章设计专业的C++程序
2.2编程设计的重要性
2.3C++设计有什么不同之处
2.4C++设计的两个原则
2.4.1抽象
2.4.2重用
2.5设计一个象棋程序
2.5.1需求
2.5.2设计步骤
2.6小结
第3章基于对象的设计
3.1面向对象的世界观
3.1.1我是在以过程性思维思考吗
3.1.2面向对象思想
3.1.3身处对象世界中
3.1.4对象关系
3.1.5抽象
3.2小结
第4章基于库和模式的设计
4.1重用代码
4.1.1有关术语
4.1.2决定是否重用代码
4.1.3重用代码的策略
4.1.4捆绑第三方应用
4.1.5开源库
4.1.6C++标准库
4.2利用模式和技术完成设计
4.2.1设计技术
4.2.2设计模式
4.3小结
第5章重用设计
5.1重用方法论
5.2如何设计可重用的代码
5.2.1使用抽象
5.2.2适当地建立代码结构以优化
重用
5.2.3设计可用的接口
5.2.4协调一般性和易用性
5.3小结
第6章充分利用软件工程方法
6.1为什么需要过程
6.2软件生命期模型
6.2.1分阶段模型和瀑布模型
6.2.2螺旋方法
6.2.3统一开发过程
6.3软件工程方法论
6.3.1极限编程(XP)
6.3.2软件triage
6.4建立自己的过程和方法论
6.4.1以开放的心态接纳新思想
6.4.2汇总新思想
6.4.3明确哪些可行,哪些不可行
6.4.4不要做叛逃者
6.5小结
第二部分编写C++代码方式
第7章好的编码风格
7.1为什么代码看上去要好
7.1.1提前考虑
7.1.2保持清晰
7.1.3好的代码风格包括哪些因素
7.2为代码加注释
7.2.1写注释的原因
7.2.2注释风格
7.2.3本书中的注释
7.3分解
7.3.1通过重构来分解
7.3.2根据设计来分解
7.3.3本书中的分解
7.4命名
7.4.1选择一个好名字
7.4.2命名约定
7.5合理地使用语言特性
7.5.1使用常量
7.5.2利用const变量
7.5.3使用引用而不是指针
7.5.4使用定制异常
7.6格式化
7.6.1有关大括号对齐的争论
7.6.2考虑空格和小括号
7.6.3空格和制表符
7.7风格方面的难题
7.8小结
第8章掌握类和对象
8.1电子表格示例
8.2编写类
8.2.1类定义
8.2.2定义方法
8.2.3使用对象
8.3对象生命期
8.3.1对象创建
8.3.2对象撤销
8.3.3对象赋值
8.3.4区别复制和赋值
8.4小结
第9章精通类和对象
9.1对象中的动态内存分配
9.1.1Spreadsheet类
9.1.2用析构函数释放内存
9.1.3处理复制和赋值
9.2不同类型的数据成员
9.2.1静态数据成员
9.2.2const数据成员
9.2.3引用数据成员
9.2.4const引用数据成员
9.3深入了解方法
9.3.1静态方法
9.3.2const方法
9.3.3方法重载
9.3.4默认参数
9.3.5内联方法
9.4嵌套类
9.5友元
9.6操作符重载
9.6.1实现加法
9.6.2重载算术操作符
9.6.3重载比较操作符
9.6.4利用操作符重载构建类型
9.7方法和成员指针
9.8构建抽象类
9.9小结
第10章探索继承技术
10.1使用继承构建类
10.1.1扩展类
10.1.2覆盖方法
10.2继承以实现重用
10.2.1类WeatherPrediction
10.2.2在子类中增加功能
10.2.3在子类中进行功能替换
10.3考虑父类
10.3.1父构造函数
10.3.2父析构函数
10.3.3引用父类的数据
10.3.4向上类型强制转换和向下类型
强制转换
10.4继承以实现多态
10.4.1Spreadsheet的返回结果
10.4.2设计多态电子表格单元格
10.4.3电子表格单元格的基类—
10.4.4各个子类
10.4.5充分利用多态
10.4.6将来的考虑
10.5多重继承
10.5.1从多个类继承
10.5.2命名冲突与二义基类
10.6继承技术中有趣而隐蔽的问题
10.6.1改变覆盖方法的特性
10.6.2覆盖方法的特殊情况
10.6.3复制构造函数与相等操作符
10.6.4关键字virtual的真相
10.6.5运行时类型工具
10.6.6非公共继承
10.6.7虚基类
10.7小结
第11章利用模板编写通用代码
11.1模板概述
11.2类模板
11.2.1编写类模板
11.2.2编译器如何处理模板
11.2.3模板代码在文件之间的分布
11.2.4模板参数
11.2.5方法模板
11.2.6模板类特殊化
11.2.7从模板类派生子类
11.2.8继承与特殊化的区别
11.3函数模板
11.3.1函数模板特殊化
11.3.2函数模板的重载
11.3.3类模板的友元函数模板
11.4高级模板
11.4.1关于模板参数的更多知识
11.4.2模板类的部分特殊化
11.4,3用重载模板函数部分特殊化
11.4.4模板递归
11.5小结
第12章理解C++疑难问题
12.1引用
12.1.1引用变量
12.1.2引用数据成员
12.1.3引用参数
12.1.4引用返回类型
12.1.5采用引用还是指针
12.2关键字疑点
12.2.1关键字const
12.2.2关键字static
12.2.3非局部变量的初始化顺序
12.3类型与类型强制转换
12.3.1typedef
12.3.2类型强制转换
12.4解析作用域
12.5头文件
12.6C实用工具
12.6.1变量长度参数列表
12.6.2预处理宏
12.7小结第三部分掌握C++高级特性
第13章有效的内存管理
13.1使用动态内存
13.1.1如何描述内存
13.1.2内存的分配与撤销
13.1.3数组
13.1.4使用指针
13.2数组与指针的对应
13.2.1数组即指针
13.2.2指针并非都是数组
13.3动态字符串
13.3.1C风格的字符串
13.3.2字符串直接量
13.3.3C++的字符串类
13.4低级的内存操作
13,4.1指针运算
13.4.2自定义内存管理
13.4.3垃圾回收
13.4.4对象池
13.4.5函数指针
13.5常见的内存陷阱
13.5.1字符串空间分配不足
13.5.2内存泄漏
13.5.3二次删除与无效指针
13.5.4访问越界指针
13.6小结..
第14章揭开C++I/O的神秘
面纱
14.1使用流
14.1.1到底什么是流
14.1.2流的源与目的
14.1.3流输出
14.1.4流输入
14.1.5输入与输出对象
14.2字符串流
14.3文件流
14.3.1使用seek()与tell()
14.3.2链接流
14.4双向I/O
14.5国际化
14.5.1宽字符
14.5.2非西方字符集
14.5.3本地化环境与方面
14.6小结
第15章处理错误
15.1错误和异常
15.1.1到底什么是异常
15.1.2C++中的异常为什么好
15.1.3C++中的异常为什么不好
15.1.4我们的建议
15.2异常机制
15.2.1抛出和捕获异常
15.2.2异常类型
15.2.3抛出和捕获多个异常
15.2.4未捕获的异常
15.2.5抛出列表
15.3异常和多态
15.3.1标准异常层次体系
15.3.2按类层次捕获异常
15.3.3编写自己的异常类
15.4栈展开和清除
15.4.1捕获.清除和重新抛出
15.4.2使用智能指针
15.5常见的错误处理问题
15.5.1内存分配错误
15.5.2构造函数中的错误
15.5.3析构函数中的错误
15.6综合
15.7小结
第四部分确保无错代码
第16章重载C++操作符
16.1操作符重载概述
16.1.1为什么要重载操作符
16.1.2操作符重载的限制
16.1.3操作符重载中的选择
16.1.4不应重载的操作符
16.1.5可重载操作符小结
16.2重载算术操作符
16.2.1重载一元减和一元加
16.2.2重载自增和自减
16.3重载位操作符和二元逻辑操作符
16.4重载插入和析取操作符
16.5重载下标操作符
16.5.1利用operator[]提供只读
访问
16.5.2非整数数组索引
16.6重载函数调用操作符
16.?重载解除引用操作符
16.7.1实现operator
16.7.2实现operator一>
16.7.3到底什么是operator一>
16.8编写转换操作符
16.8.1转换操作符的二义性问题
16.8.2布尔表达式的转换
16.9重载内存分配和撤销操作符
16.9.1new和delete究竟如何工作
16.9.2重载operatornew和operatordelete
16.9.3重载带额外参数的operatornew和operatordelete
16.10小结
第17章编写高效的C++程序
17.1性能和效率概述
17.1.1实现高效的两种方法
17.1.2两类程序
17.1.3C++是一种低效语言吗
17.2语言级效率
17.2.1高效地处理对象
17.2.2不要过度使用高开销的语言特性
17.2.3使用内联方法和函数
17.3设计级效率
17.3.1尽可能缓存
17.3.2使用对象池
17.3.3使用线程池
17.4测评分析
17.5小结
第18章开发跨平台和跨语言的应用
18.1跨平台开发
18.1.1体系结构问题
18.1.2实现问题
18.1.3特定于平台的特性
18.2跨语言开发
18.2.1混合C和C++
18.2.2转换模式
18.2.3与C代码的链接
18.2.4利用JNI混合Java和C++
18.2.5C++与Peri和Shell脚本的混合
18.2.6C++与汇编代码的混合
18.3小结
第19章熟练地测试
19.1质量控制
19.1.1谁来负责测试
19.1.2bug的生命期
19.1.3bug跟踪工具
19.2单元测试
19.2.1单元测试的方法
19.2.2单元测试过程
19.2.3实战单元测试
19.3高级测试
19.3.1集成测试
19.3.2系统测试
19.3:3回归测试
19.4成功测试的提示
19.5小结
第20章征服调试
20.1调试基本法则
20.2bug分类
20.3避免bug
20.4找出bug的方法
20.4.1错误日志
20.4.2调试轨迹
20.4.3断言
20.5调试技术
20.S.1再生bug
20.5.2调试可再生bug
20.5.3调试不可再生bug
20.5.4调试内存问题
20.5.5调试多线程程序
20.5.6调试示例:文章引用
20.5.7从ArticleCitations示例学到的教训
20.6小结
第21章深入STL:容器和迭代器
21,1容器概述
21.1.1元素需求
21.1.2异常和错误检查
21.1.3迭代器
21.2顺序容器
21.2.1vector
21.2.2vectOr特殊化
21.2.3deque
21.2.4list
21.3容器适配器
21.3.1queue
21.3.2priority_queue
2L3.3stack
21.4关联容器
21.4.1pair工具类
21.4.2map
21.4.3multimap
21,4.4set
21.4.5multiset
21.5其他容器
21.5.1数组作为STL容器
21.5.2string作为STI容器
21.5.3流作为STL容器
21.5.4bitset
21.6小结
第五部分使用库和模式
第22章掌握STL算法和函数对象
22.1算法概述
22.1.1find()和find—汀()算法
22.1.2accumulate()算法
22.2函数对象
22.2.1算术函数对象
22.2.2比较函数对象
22.2.3逻辑函数对象
22.2.4函数对象适配器
22.2.5编写自己的函数对象
22.3算法细节
22.3.1工具算法
22.3.2非修改算法
22.3.3修改算法
22.3.4排序算法
22.3.5集合算法
22.4算法和函数对象示例:选民注册审计
22.4.1选民注册审计问题描述
22.4.2auditVoterRolls()函数
22.4.3getDuplicates()函数
22.4.4RemoveNames函数对象
22.4.5NamelnList函数对象
22.4.6测试auditVoterRolls()函数
22.5小结
第23章定制和扩展STL
23.1分配器
23.2迭代器适配器
23.2.1逆序迭代器
23.2.2流迭代器
23.2.3插入迭代器
23.3扩展STL
23.3.1为什么要扩展STL
23.3.2编写STL算法
23.3.3编写一个STL容器
23.4小结
第24章探讨分布式对象
24.1分布式计算的魅力
24.1.1分布以获得可扩展性
24.1.2分布以获得可靠性
24.1.3分布以获得集中性
24.1.4分布式内容
24.1.5分布式vs网络式
24.2分布式对象
24.2.1串行化和编组
24.2.2远程过程调用
24.3CORBA
24.3.1接口定义语言—
24.3.2实现类
24.3.3使用对象
24.4XML
24.4.1XML陕速入门
24.4.2XML作为一种分布式对象技术.
24.4.3用C++生成和解析XML
24.4.4XML验证
24.4.5用XML构建分布式对象
24.4.6SOAP(简单对象访问协议)
24.5小结
第25章结合技术和框架
25.1“我想不起来如何”
25.1.1编写一个类
25.1.2派生一个现有类
25.1.3抛出和捕获异常
25.1.4读文件
25.1.5写文件
25.1.6编写模板类
25.2还有更好的办法
25.2.1带引用计数的智能指针
25.2.2双重分派
25.2.3混合类
25.3面向对象框架
25.3.1使用框架
25.3.2模型—视图—控制器模式
25.4小结
第26章应用设计模式
26.1单例模式
26.1.1举例:日志机制
26.1.2单例的实现
26.1.3使用单例
26.2工厂模式
26.2.1举例:汽车工厂模拟
26.2.2实现工厂
26.2.3使用工厂
26.2.4工厂的其他使用
26.3代理模式
26.3.1举例:隐藏网络连通性问题
26.3.2实现代理
26.3.3使用代理
26.4适配器模式
26.4.1举例:适配一个XML库
26.4.2适配器的实现
26.4.3使用适配器
26.5装饰器模式
26.5.1举例:定义网页中的样式
26.5.2装饰器的实现
26.5.3使用装饰器
26.6职责链模式
26.6.1举例:事件处理
26.6.2职责链的实现
26.6.3使用职责链
26.7观察者模式
26.7.1举例:事件处理
26.7.2实现观察者
26.7.3使用观察者
26.8小结
附录
附录AC++面试宝典
附录B参考书目...
猜您喜欢

读书导航