C++面向对象高效编程(第2版)

C++面向对象高效编程(第2版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] ,
2013-10
版次: 2
ISBN: 9787115329349
定价: 118.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 757页
字数: 1156千字
正文语种: 简体中文
76人买过
  •   《C++面向对象高效编程(第2版)》以帮助读者掌握C++面向对象高效编程范式为目的,详细介绍了C++编程中的各种概念和应用技巧。《C++面向对象高效编程(第2版)》共分为两部分,第一部分(第1章至第10章)介绍面向对象编程的基础和应用,如数据抽象、继承、泛型类型、异常处理等内容;第二部分(第11章至第13章)深入探讨如何建立抽象及其策略,并研究了C++对象模型。书中包含大量的代码实例,读者不仅能从理论上得以提高,而且还能轻松地在实践中应用。
      《C++面向对象高效编程(第2版)》适用于C++程序员,也可供对面向对象程序设计感兴趣的编程人员及大专院校计算机专业师生参考。   达特特里,当前是Cisco公司的一名高级技术主管,在此之前,曾以项目负责人、技术主管的身份供职于网景公司(NetsCapeCommunications)和Taligent公司,主要从事前沿Web技术、面向对象(OO)应用开发框架的研究。他还是面向对象设计和C++领域的独立顾问/培训l师,而且在操作系统、OO架构、OO语言(包括C++、Smalltalk、Eiffel和Modula-2)等领域有25年以上的从业经验。除此之外,他还是加州大学伯克利扩展(BerkeleyExtension)项目的知名讲师,而且凭借其渊博的学识和在教学方面的天分备受欢迎。Kayst]av早在1987年,就开始使用C++进行编程了。 第一部分概念、实践和应用
    第1章什么是面向对象编程
    1.1背景
    1.1.1面向过程编程示例
    1.1.2银行账户的表示
    1.1.3银行账户的安全
    1.1.4用面向对象编程解决问题
    1.2理解对象模型
    1.3术语
    1.4理解消息、方法和实例变量
    1.4.1对象中包含的内容
    1.4.2实例化(或创建)对象
    1.5什么可以作为类
    1.6什么不是类
    1.7类的目的
    1.8深入了解对象
    1.8.1对象的状态
    1.8.2对象状态的重要性
    1.8.3谁控制对象的状态
    1.8.4对象的行为
    1.9面向对象软件开发的阶段
    1.9.1面向对象分析(OOA)
    1.9.2面向对象设计(OOD)
    1.10面向对象编程(OOP)
    1.11对象模型的关键要素
    1.12OOP范式和语言
    1.13面向对象编程语言的要求
    1.14对象模型的优点
    1.15小结

    第2章什么是数据抽象
    2.1接口和实现的分离
    2.2对象接口的重要性
    2.3实现的含义
    2.4保护实现
    2.5数据封装的优点
    2.6接口、实现和数据封装之间的关系
    2.7数据封装注意事项
    2.8确定封装的内容
    2.9抽象数据类型
    2.10抽象数据类型——栈的实现
    2.11C++中的数据抽象
    2.12类中的访问区域
    2.13和类一起使用的术语
    2.14类的实现者
    2.15实现成员函数
    2.16识别成员函数的目标对象
    2.17程序示例
    2.18对象是重点
    2.19对接口的再认识
    2.20什么是多线程安全类
    2.21确保抽象的可靠性——类不变式和断言
    2.21.1类不变式
    2.21.2前置条件和后置条件
    2.21.3使用断言实现不变式和条件
    2.21.4高效使用断言
    2.22面向对象设计的表示法
    2.23Booch表示法
    2.24Booch中类的关系
    2.24.1关联
    2.24.2聚集(has-a)
    2.24.3“使用”关系
    2.24.4继承关系(is-a)
    2.24.5类范畴
    2.25统一建模语言(UML)
    2.26UML中类的关系
    2.27关联
    2.27.1作为聚集的关联
    2.27.2OR关联
    2.28组合
    2.29泛化关系(is-a)
    2.30has-a关系的重要性
    2.31小结

    第3章C++与数据抽象
    3.1类概念的基础
    3.2类要素的细节
    3.2.1访问区域
    3.2.2分析
    3.3复制构造函数
    3.4赋值操作符
    3.5this指针和名称重整的进一步说明
    3.6const成员函数的概念
    3.7编译器如何实现const成员函数
    3.8C++中类和结构的区别
    3.9类可以包含什么
    3.10设计期间的重点——类的接口
    3.11类名、成员函数名、参数类型和文档
    3.12参数传递模式——客户的角度
    3.13采用语义
    3.14为参数选择正确的模式
    3.15函数返回值
    3.16从函数中返回引用
    3.17编写内存安全类
    3.18客户对类和函数的责任
    3.19小结

    第4章OOP中的初始化和无用单元收集
    4.1什么是初始化
    4.1.1使用构造函数初始化
    4.1.2使用内嵌对象必须遵守的规则
    4.2无用单元收集问题
    4.2.1无用单元
    4.2.2悬挂引用
    4.2.3无用单元收集和悬挂引用的补救
    4.2.4无用单元收集和语言设计
    4.2.5在C++中何时产生无用单元
    4.2.6对象何时获得资源
    4.3C++中的无用单元收集
    4.4对象的标识
    4.5对象复制的语义
    4.6对象赋值的语义
    4.7对象相等的语义
    4.8为什么需要副本控制
    4.8.1信号量示例
    4.8.2许可证服务器示例
    4.8.3字符串类示例
    4.9分析
    4.10“写时复制”的概念
    4.10.1何时使用引用计数
    4.10.2“写时复制”小结
    4.11类和类型
    4.12小结

    第5章继承的概念
    5.1继承的基本知识
    5.2is-a关系的含义
    5.3继承关系的效果
    5.4多态置换原则
    5.5用继承扩展类层次
    5.6继承的一些基本优点
    5.7动态绑定、虚函数和多态性
    5.7.1动态绑定含义
    5.7.2动态绑定的支持——虚函数
    5.8继承对数据封装的影响
    5.9多态的含义
    5.10有效使用虚函数(动态绑定)
    5.11虚析构函数的要求
    5.12构造函数和虚函数
    5.13一般-特殊的概念
    5.14抽象(延期)类的概念
    5.15抽象类的用途
    5.16强大的继承
    5.17有效的代码复用
    5.18抽象基类的客户
    5.19继承优点小结
    5.20继承和动态绑定的危险
    5.20.1C++如何实现动态绑定(虚函数)
    5.20.2虚函数的开销
    5.20.3动态绑定和类型检查
    5.21不必要的继承和动态绑定
    5.22使用虚函数的不同模式
    5.23小结

    第6章多重继承概念
    6.1多重继承的简单定义
    6.2大学示例
    6.3多重继承关系的含义
    6.4多重继承场景
    6.4.1C++中解决名称冲突
    6.4.2二义性基类问题
    6.5多重继承的基本优点
    6.6多重继承的替换方案
    6.6.1第一种替换方案
    6.6.2第二种替换方案
    6.7重复继承
    6.8重复继承的解决方案
    6.8.1在C++中通过虚基类共享对象
    6.8.2虚基类的优点
    6.8.3虚基类产生的新问题
    6.8.4比较Eiffel和C++中的多重继承
    6.9继承的一般问题
    6.10使用mixin类加入静态功能
    6.10.1mixin类的定义
    6.10.2何时使用mixin类
    6.11动态变化情况的设计
    6.11.1角色扮演类的设计灵活性
    6.11.2如何使用角色扮演类
    6.11.3管理角色的另一种方法
    6.11.4TUniversityMember类对象的多态用法
    6.11.5按要求改动现有类
    6.11.6mixin类和角色对象的比较——适用范围
    6.12C++的私有派生
    6.12.1何时使用私有派生
    6.12.2重新导出私有基类的成员
    6.12.3私有派生的替换方法——包含
    6.12.4需要使用私有派生的情况
    6.13mixin类和私有派生的实用示例
    6.14继承与包含
    6.15小结

    第7章从类中选择性导出(友元函数)
    7.1需要什么
    7.2C++的情况
    7.3友元关系的含义
    7.4非成员函数和友元函数的应用
    7.4.1实例1:尽量减少类之间过多的交互
    7.4.2实例2:克服语法问题
    7.4.3实例3:需要和多个类进行通信的函数
    7.5非成员函数的优点
    7.6选择友元函数还是成员函数
    7.7小结

    第8章操作符重载的概念
    8.1语言类型和程序员定义类型的区别
    8.2什么是重载操作符
    8.3操作符重载的优点和缺点
    8.3.1更加简洁的抽象数据类型
    8.3.2令人费解的操作符重载
    8.3.3无法理解优先级和结合规则
    8.4C++中的重载操作符
    8.5++和——操作符的另一个应用
    8.6更复杂的操作符——成员访问操作符:-
    8.7非成员函数的操作符
    8.7.1作为成员函数的操作符
    8.7.2作为非成员函数实现的操作符
    8.7.3为什么需要转换
    8.8转换函数
    8.8.1转换构造函数和转换函数之间的相互影响
    8.8.2消除对临时对象的需求
    8.9从操作符函数返回结果
    8.10赋值操作符
    8.11小结

    第9章泛型类型
    9.1重复性编码问题
    9.2智能解决方案——泛型编程
    9.3泛型类型(类)的基本知识
    9.4泛型类型和代码重复
    9.5泛型类实现者与客户之间的契约
    9.5.1这是否是良好的设计
    9.5.2泛型类实现中的操作符和成员函数
    9.5.3替换解决方案——泛型类的特殊化
    9.6模板特殊化
    9.6.1模板成员函数的特殊化
    9.6.2另一种替换方案:分离对象的比较
    9.6.3不能随意停用模板类的原因
    9.7模板类特殊化
    9.8泛型函数的概念
    9.9C++中模板类和成员函数的实例化
    9.10泛型类型和类型检查
    9.11约束泛型和无约束泛型
    9.11.1C++中对模板参数的约束
    9.11.2C++中模板参数的特定类型
    9.11.3模板参数的默认值
    9.12C++中对模板参数执行约束
    9.13泛型类和选择性导出
    9.14继承和泛型类
    9.15泛型类继承的用途
    9.16控制对象创建的一般技巧
    9.17实现计数指针
    9.18尽量减少模板对象的代码重复
    9.18.1程序的内存占用
    9.18.2减少模板代码的方案
    9.19模板类和源代码保护
    9.20共享(动态)库中的模板类
    9.20.1共享库中的模板类——多实例问题
    9.20.2消除共享库中的多个实例
    9.20.3和现有共享库链接
    9.20.4容器类
    9.21泛型类和继承的比较
    9.22小结

    第10章处理异常情况
    10.1处理错误状况的原因
    10.2错误码的替换方案
    10.3C++异常处理模型
    10.3.1C++异常机制的工作方式
    10.3.2try块的重要性
    10.3.3throw表达式的重要性
    10.3.4理解动态调用链
    10.3.5处理多个异常
    10.3.6catch块的责任
    10.4Eiffel中的异常模型
    10.5Eiffel和C++异常模型的优缺点
    10.6有效地使用C++异常
    10.7创建异常层次
    10.7.1catch处理代码的顺序
    10.7.2编写异常安全函数
    10.8项目中的异常处理架构
    10.9项目中错误管理的成功策略
    10.9.1函数不是防火墙
    10.9.2设计异常层次
    10.10异常环境中的资源管理
    10.10.1自动资源管理
    10.10.2泛化资源管理解决方案
    10.11异常和构造函数
    10.11.1从函数中返回安全资源
    10.11.2管理对象数组的辅助类
    10.11.3自动无用单元收集的开销
    10.12构造函数的部分完成
    10.13使用异常创建安全数组
    10.14小结

    第二部分构建强大的面向对象软件
    第11章掌握数据抽象
    11.1隐藏抽象的实现细节
    11.1.1使用句柄的优点
    11.1.2使用句柄的缺点
    11.2将指针作为数据成员使用(惰性求值)
    11.3控制对象创建
    11.3.1只允许使用new()操作符创建对象
    11.3.2防止使用new()操作符创建对象
    11.4使用指针和引用代替内嵌对象
    11.5避免用大型数组作为自动变量(或数据成员)
    11.6使用对象数组和对象指针数组
    11.7用对象代替基本类型指针作为数据成员和成员函数的返回值
    11.8与C的兼容性
    11.9合理选择实现:对象大小和代码效率
    11.10避免临时对象
    11.11使用复制构造函数初始化对象
    11.12有效使用代理对象
    11.12.1代理对象有助于安全共享对象
    11.12.2代理对象易于使用
    11.12.3代理对象是远程对象的替身
    11.12.4智能代理对象提供额外的功能
    11.12.5代理对象解决语法/语义的问题
    11.12.6泛型下标代理技术
    11.13使用简单的抽象建立更复杂的抽象
    11.14抽象必须允许客户以不同的方式使用类
    11.15小结

    第12章高效使用继承
    12.1用继承实现简洁的菜单和命令
    12.2封装创建对象的细节
    12.3虚构造函数的概念
    12.4为协议控制而组合使用虚函数和非虚函数
    12.5双分派概念
    12.6设计和实现容器类
    12.7设计可处理不同类型的容器
    12.8用泛型编程实现同质容器类
    12.8.1设计目的
    12.8.2基于模板的同质容器的优点
    12.9基于模板的容器的缺点
    12.10导航容器
    12.11主动迭代器
    12.12管理容器和迭代器——客户的角度
    12.12.1样式1:在容器中创建并返回迭代器供用户使用
    12.12.2样式2:按值返回用户可使用迭代器控制的容器
    12.13C++标准模板库(STL)
    12.13.1STL容器
    12.13.2迭代器
    12.13.3STL中的算法
    12.14小结
    12.15TArray容器的实现代码

    第13章理解C++对象模型
    13.1高效实现
    13.2C++表示对象的方式
    13.2.1没有虚函数的类
    13.2.2成员函数
    13.2.3静态数据成员
    13.2.4构造函数
    13.3包含虚函数的类
    13.4在共享库之间共享虚函数表
    13.5虚函数和多重继承(非虚基类)
    13.6虚基类
    13.6.1虚基类的成员访问
    13.6.2带虚函数的虚基类
    13.7RTTI(运行时类型识别)的实现支持
    13.8基于对象和面向对象编程
    13.9引用、指针和值
    13.9.1引用和指针的赋值
    13.9.2复制构造函数
    13.9.3构造函数的职责
    13.10复制构造函数的责任
    13.11优化对象的按值传递和按值返回
    13.11.1按值传递
    13.11.2按值返回
    13.12运行时初始化
    13.13小结

    附录A
    参考书目和推荐读物
    索引
  • 内容简介:
      《C++面向对象高效编程(第2版)》以帮助读者掌握C++面向对象高效编程范式为目的,详细介绍了C++编程中的各种概念和应用技巧。《C++面向对象高效编程(第2版)》共分为两部分,第一部分(第1章至第10章)介绍面向对象编程的基础和应用,如数据抽象、继承、泛型类型、异常处理等内容;第二部分(第11章至第13章)深入探讨如何建立抽象及其策略,并研究了C++对象模型。书中包含大量的代码实例,读者不仅能从理论上得以提高,而且还能轻松地在实践中应用。
      《C++面向对象高效编程(第2版)》适用于C++程序员,也可供对面向对象程序设计感兴趣的编程人员及大专院校计算机专业师生参考。
  • 作者简介:
      达特特里,当前是Cisco公司的一名高级技术主管,在此之前,曾以项目负责人、技术主管的身份供职于网景公司(NetsCapeCommunications)和Taligent公司,主要从事前沿Web技术、面向对象(OO)应用开发框架的研究。他还是面向对象设计和C++领域的独立顾问/培训l师,而且在操作系统、OO架构、OO语言(包括C++、Smalltalk、Eiffel和Modula-2)等领域有25年以上的从业经验。除此之外,他还是加州大学伯克利扩展(BerkeleyExtension)项目的知名讲师,而且凭借其渊博的学识和在教学方面的天分备受欢迎。Kayst]av早在1987年,就开始使用C++进行编程了。
  • 目录:
    第一部分概念、实践和应用
    第1章什么是面向对象编程
    1.1背景
    1.1.1面向过程编程示例
    1.1.2银行账户的表示
    1.1.3银行账户的安全
    1.1.4用面向对象编程解决问题
    1.2理解对象模型
    1.3术语
    1.4理解消息、方法和实例变量
    1.4.1对象中包含的内容
    1.4.2实例化(或创建)对象
    1.5什么可以作为类
    1.6什么不是类
    1.7类的目的
    1.8深入了解对象
    1.8.1对象的状态
    1.8.2对象状态的重要性
    1.8.3谁控制对象的状态
    1.8.4对象的行为
    1.9面向对象软件开发的阶段
    1.9.1面向对象分析(OOA)
    1.9.2面向对象设计(OOD)
    1.10面向对象编程(OOP)
    1.11对象模型的关键要素
    1.12OOP范式和语言
    1.13面向对象编程语言的要求
    1.14对象模型的优点
    1.15小结

    第2章什么是数据抽象
    2.1接口和实现的分离
    2.2对象接口的重要性
    2.3实现的含义
    2.4保护实现
    2.5数据封装的优点
    2.6接口、实现和数据封装之间的关系
    2.7数据封装注意事项
    2.8确定封装的内容
    2.9抽象数据类型
    2.10抽象数据类型——栈的实现
    2.11C++中的数据抽象
    2.12类中的访问区域
    2.13和类一起使用的术语
    2.14类的实现者
    2.15实现成员函数
    2.16识别成员函数的目标对象
    2.17程序示例
    2.18对象是重点
    2.19对接口的再认识
    2.20什么是多线程安全类
    2.21确保抽象的可靠性——类不变式和断言
    2.21.1类不变式
    2.21.2前置条件和后置条件
    2.21.3使用断言实现不变式和条件
    2.21.4高效使用断言
    2.22面向对象设计的表示法
    2.23Booch表示法
    2.24Booch中类的关系
    2.24.1关联
    2.24.2聚集(has-a)
    2.24.3“使用”关系
    2.24.4继承关系(is-a)
    2.24.5类范畴
    2.25统一建模语言(UML)
    2.26UML中类的关系
    2.27关联
    2.27.1作为聚集的关联
    2.27.2OR关联
    2.28组合
    2.29泛化关系(is-a)
    2.30has-a关系的重要性
    2.31小结

    第3章C++与数据抽象
    3.1类概念的基础
    3.2类要素的细节
    3.2.1访问区域
    3.2.2分析
    3.3复制构造函数
    3.4赋值操作符
    3.5this指针和名称重整的进一步说明
    3.6const成员函数的概念
    3.7编译器如何实现const成员函数
    3.8C++中类和结构的区别
    3.9类可以包含什么
    3.10设计期间的重点——类的接口
    3.11类名、成员函数名、参数类型和文档
    3.12参数传递模式——客户的角度
    3.13采用语义
    3.14为参数选择正确的模式
    3.15函数返回值
    3.16从函数中返回引用
    3.17编写内存安全类
    3.18客户对类和函数的责任
    3.19小结

    第4章OOP中的初始化和无用单元收集
    4.1什么是初始化
    4.1.1使用构造函数初始化
    4.1.2使用内嵌对象必须遵守的规则
    4.2无用单元收集问题
    4.2.1无用单元
    4.2.2悬挂引用
    4.2.3无用单元收集和悬挂引用的补救
    4.2.4无用单元收集和语言设计
    4.2.5在C++中何时产生无用单元
    4.2.6对象何时获得资源
    4.3C++中的无用单元收集
    4.4对象的标识
    4.5对象复制的语义
    4.6对象赋值的语义
    4.7对象相等的语义
    4.8为什么需要副本控制
    4.8.1信号量示例
    4.8.2许可证服务器示例
    4.8.3字符串类示例
    4.9分析
    4.10“写时复制”的概念
    4.10.1何时使用引用计数
    4.10.2“写时复制”小结
    4.11类和类型
    4.12小结

    第5章继承的概念
    5.1继承的基本知识
    5.2is-a关系的含义
    5.3继承关系的效果
    5.4多态置换原则
    5.5用继承扩展类层次
    5.6继承的一些基本优点
    5.7动态绑定、虚函数和多态性
    5.7.1动态绑定含义
    5.7.2动态绑定的支持——虚函数
    5.8继承对数据封装的影响
    5.9多态的含义
    5.10有效使用虚函数(动态绑定)
    5.11虚析构函数的要求
    5.12构造函数和虚函数
    5.13一般-特殊的概念
    5.14抽象(延期)类的概念
    5.15抽象类的用途
    5.16强大的继承
    5.17有效的代码复用
    5.18抽象基类的客户
    5.19继承优点小结
    5.20继承和动态绑定的危险
    5.20.1C++如何实现动态绑定(虚函数)
    5.20.2虚函数的开销
    5.20.3动态绑定和类型检查
    5.21不必要的继承和动态绑定
    5.22使用虚函数的不同模式
    5.23小结

    第6章多重继承概念
    6.1多重继承的简单定义
    6.2大学示例
    6.3多重继承关系的含义
    6.4多重继承场景
    6.4.1C++中解决名称冲突
    6.4.2二义性基类问题
    6.5多重继承的基本优点
    6.6多重继承的替换方案
    6.6.1第一种替换方案
    6.6.2第二种替换方案
    6.7重复继承
    6.8重复继承的解决方案
    6.8.1在C++中通过虚基类共享对象
    6.8.2虚基类的优点
    6.8.3虚基类产生的新问题
    6.8.4比较Eiffel和C++中的多重继承
    6.9继承的一般问题
    6.10使用mixin类加入静态功能
    6.10.1mixin类的定义
    6.10.2何时使用mixin类
    6.11动态变化情况的设计
    6.11.1角色扮演类的设计灵活性
    6.11.2如何使用角色扮演类
    6.11.3管理角色的另一种方法
    6.11.4TUniversityMember类对象的多态用法
    6.11.5按要求改动现有类
    6.11.6mixin类和角色对象的比较——适用范围
    6.12C++的私有派生
    6.12.1何时使用私有派生
    6.12.2重新导出私有基类的成员
    6.12.3私有派生的替换方法——包含
    6.12.4需要使用私有派生的情况
    6.13mixin类和私有派生的实用示例
    6.14继承与包含
    6.15小结

    第7章从类中选择性导出(友元函数)
    7.1需要什么
    7.2C++的情况
    7.3友元关系的含义
    7.4非成员函数和友元函数的应用
    7.4.1实例1:尽量减少类之间过多的交互
    7.4.2实例2:克服语法问题
    7.4.3实例3:需要和多个类进行通信的函数
    7.5非成员函数的优点
    7.6选择友元函数还是成员函数
    7.7小结

    第8章操作符重载的概念
    8.1语言类型和程序员定义类型的区别
    8.2什么是重载操作符
    8.3操作符重载的优点和缺点
    8.3.1更加简洁的抽象数据类型
    8.3.2令人费解的操作符重载
    8.3.3无法理解优先级和结合规则
    8.4C++中的重载操作符
    8.5++和——操作符的另一个应用
    8.6更复杂的操作符——成员访问操作符:-
    8.7非成员函数的操作符
    8.7.1作为成员函数的操作符
    8.7.2作为非成员函数实现的操作符
    8.7.3为什么需要转换
    8.8转换函数
    8.8.1转换构造函数和转换函数之间的相互影响
    8.8.2消除对临时对象的需求
    8.9从操作符函数返回结果
    8.10赋值操作符
    8.11小结

    第9章泛型类型
    9.1重复性编码问题
    9.2智能解决方案——泛型编程
    9.3泛型类型(类)的基本知识
    9.4泛型类型和代码重复
    9.5泛型类实现者与客户之间的契约
    9.5.1这是否是良好的设计
    9.5.2泛型类实现中的操作符和成员函数
    9.5.3替换解决方案——泛型类的特殊化
    9.6模板特殊化
    9.6.1模板成员函数的特殊化
    9.6.2另一种替换方案:分离对象的比较
    9.6.3不能随意停用模板类的原因
    9.7模板类特殊化
    9.8泛型函数的概念
    9.9C++中模板类和成员函数的实例化
    9.10泛型类型和类型检查
    9.11约束泛型和无约束泛型
    9.11.1C++中对模板参数的约束
    9.11.2C++中模板参数的特定类型
    9.11.3模板参数的默认值
    9.12C++中对模板参数执行约束
    9.13泛型类和选择性导出
    9.14继承和泛型类
    9.15泛型类继承的用途
    9.16控制对象创建的一般技巧
    9.17实现计数指针
    9.18尽量减少模板对象的代码重复
    9.18.1程序的内存占用
    9.18.2减少模板代码的方案
    9.19模板类和源代码保护
    9.20共享(动态)库中的模板类
    9.20.1共享库中的模板类——多实例问题
    9.20.2消除共享库中的多个实例
    9.20.3和现有共享库链接
    9.20.4容器类
    9.21泛型类和继承的比较
    9.22小结

    第10章处理异常情况
    10.1处理错误状况的原因
    10.2错误码的替换方案
    10.3C++异常处理模型
    10.3.1C++异常机制的工作方式
    10.3.2try块的重要性
    10.3.3throw表达式的重要性
    10.3.4理解动态调用链
    10.3.5处理多个异常
    10.3.6catch块的责任
    10.4Eiffel中的异常模型
    10.5Eiffel和C++异常模型的优缺点
    10.6有效地使用C++异常
    10.7创建异常层次
    10.7.1catch处理代码的顺序
    10.7.2编写异常安全函数
    10.8项目中的异常处理架构
    10.9项目中错误管理的成功策略
    10.9.1函数不是防火墙
    10.9.2设计异常层次
    10.10异常环境中的资源管理
    10.10.1自动资源管理
    10.10.2泛化资源管理解决方案
    10.11异常和构造函数
    10.11.1从函数中返回安全资源
    10.11.2管理对象数组的辅助类
    10.11.3自动无用单元收集的开销
    10.12构造函数的部分完成
    10.13使用异常创建安全数组
    10.14小结

    第二部分构建强大的面向对象软件
    第11章掌握数据抽象
    11.1隐藏抽象的实现细节
    11.1.1使用句柄的优点
    11.1.2使用句柄的缺点
    11.2将指针作为数据成员使用(惰性求值)
    11.3控制对象创建
    11.3.1只允许使用new()操作符创建对象
    11.3.2防止使用new()操作符创建对象
    11.4使用指针和引用代替内嵌对象
    11.5避免用大型数组作为自动变量(或数据成员)
    11.6使用对象数组和对象指针数组
    11.7用对象代替基本类型指针作为数据成员和成员函数的返回值
    11.8与C的兼容性
    11.9合理选择实现:对象大小和代码效率
    11.10避免临时对象
    11.11使用复制构造函数初始化对象
    11.12有效使用代理对象
    11.12.1代理对象有助于安全共享对象
    11.12.2代理对象易于使用
    11.12.3代理对象是远程对象的替身
    11.12.4智能代理对象提供额外的功能
    11.12.5代理对象解决语法/语义的问题
    11.12.6泛型下标代理技术
    11.13使用简单的抽象建立更复杂的抽象
    11.14抽象必须允许客户以不同的方式使用类
    11.15小结

    第12章高效使用继承
    12.1用继承实现简洁的菜单和命令
    12.2封装创建对象的细节
    12.3虚构造函数的概念
    12.4为协议控制而组合使用虚函数和非虚函数
    12.5双分派概念
    12.6设计和实现容器类
    12.7设计可处理不同类型的容器
    12.8用泛型编程实现同质容器类
    12.8.1设计目的
    12.8.2基于模板的同质容器的优点
    12.9基于模板的容器的缺点
    12.10导航容器
    12.11主动迭代器
    12.12管理容器和迭代器——客户的角度
    12.12.1样式1:在容器中创建并返回迭代器供用户使用
    12.12.2样式2:按值返回用户可使用迭代器控制的容器
    12.13C++标准模板库(STL)
    12.13.1STL容器
    12.13.2迭代器
    12.13.3STL中的算法
    12.14小结
    12.15TArray容器的实现代码

    第13章理解C++对象模型
    13.1高效实现
    13.2C++表示对象的方式
    13.2.1没有虚函数的类
    13.2.2成员函数
    13.2.3静态数据成员
    13.2.4构造函数
    13.3包含虚函数的类
    13.4在共享库之间共享虚函数表
    13.5虚函数和多重继承(非虚基类)
    13.6虚基类
    13.6.1虚基类的成员访问
    13.6.2带虚函数的虚基类
    13.7RTTI(运行时类型识别)的实现支持
    13.8基于对象和面向对象编程
    13.9引用、指针和值
    13.9.1引用和指针的赋值
    13.9.2复制构造函数
    13.9.3构造函数的职责
    13.10复制构造函数的责任
    13.11优化对象的按值传递和按值返回
    13.11.1按值传递
    13.11.2按值返回
    13.12运行时初始化
    13.13小结

    附录A
    参考书目和推荐读物
    索引
查看详情
系列丛书 / 更多
C++面向对象高效编程(第2版)
C++ Primer Plus(第6版 中文版)
[美]Stephen Prata 著;张海龙、袁国忠 译
C++面向对象高效编程(第2版)
C和C++实务精选:C++ Templates中文版
[美]David、[德]Nicolai M. Josuttis 著;陈伟柱 译
C++面向对象高效编程(第2版)
Imperfect C++(中文版)
[美]Matthew Wilson 著;荣耀、刘未鹏 译
C++面向对象高效编程(第2版)
C和C++代码精粹
[美]Chuck Allison 著;董慧颖 译
C++面向对象高效编程(第2版)
C++实践之路
[美]Bartosz Milewski 著;周良忠 译
C++面向对象高效编程(第2版)
C标准库:英文版
[美]P.J.、Plauger 著
C++面向对象高效编程(第2版)
C和指针:英文版
[美]Kenneth Reek 著
C++面向对象高效编程(第2版)
C++编程惯用法:高级程序员常用方法和技巧
[美]Robert B. Murray 著;王昕 译
C++面向对象高效编程(第2版)
C++沉思录(英文版)
[美]Andrew、Barbara E.Moo 著
C++面向对象高效编程(第2版)
C++代码设计与重用
[美]Martin、[美]Margaret A.Ellis 著;陈伟柱 译
C++面向对象高效编程(第2版)
C陷阱与缺陷(英文版)
[美]Andrew Koenig 著
相关图书 / 更多
C++面向对象高效编程(第2版)
C++边做边学
冯玉芬;周树功;母景琴;詹胜
C++面向对象高效编程(第2版)
C++程序设计基础教程 第2版
刘厚泉 李政伟 葛欣
C++面向对象高效编程(第2版)
C++编程这样学
胡芳
C++面向对象高效编程(第2版)
C++程序设计案例教程(线上线下混合版)
杨卫明;李晓虹
C++面向对象高效编程(第2版)
C++之旅(第3版)
[美]Bjarne Stroustrup(本贾尼 斯特劳斯特鲁普
C++面向对象高效编程(第2版)
C++20代码整洁之道:可持续软件开发模式实践(原书第2版)
[德]斯蒂芬·罗斯(Stephan Roth)
C++面向对象高效编程(第2版)
C++ Core Guidelines解析
杨文波 译;[德]赖纳·格林(Rainer Grimm)著 吴咏炜;何荣华;张云潮
C++面向对象高效编程(第2版)
C++程序设计(第4版)
周会平;徐建军;王挺
C++面向对象高效编程(第2版)
C++开发案例精讲
杨国兴 著
C++面向对象高效编程(第2版)
C++程序设计实践教程(新国标微课版)
马光志
C++面向对象高效编程(第2版)
C++程序设计基础与实践
牛园园;韩洁琼;李晓芳;吴成宇
C++面向对象高效编程(第2版)
C++程序设计基础教程
丁卫平 程学云 陈文兰 主编;任红建 沈晓红 文万志 副主编
您可能感兴趣 / 更多
C++面向对象高效编程(第2版)
无辜者的谎言(相信我!看到结局你一定会头皮发麻;全美读者推荐的悬疑神作,GOODREADS高分作品)
[美]A.R.托雷 著;梁颂宇 译;星文文化 出品
C++面向对象高效编程(第2版)
孩子,把你的手给我1:怎么说孩子才爱听,怎么教孩子才肯学?帮助每一位3-12岁孩子的父母结束与孩子的所有冲突!
[美]海姆·G.吉诺特
C++面向对象高效编程(第2版)
哲学、历史与僭政——重审施特劳斯与科耶夫之争
[美]弗罗斯特(Bryan-Paul Frost) 编;[美]伯恩斯(Timothy W. Burns)
C++面向对象高效编程(第2版)
怎样做成大事
[美]丹·加德纳(Dan Gardner) 著;贾拥民 译;湛庐文化 出品;[丹麦]傅以斌(Bent Flyvbjerg)
C++面向对象高效编程(第2版)
力量训练的科学基础与实践应用(第三版)
[美]弗拉基米尔· M.扎齐奥尔斯基;[美]威廉·J.克雷默;[美]安德鲁· C.弗赖伊
C++面向对象高效编程(第2版)
1200年希腊罗马神话
[美]伊迪丝·汉密尔顿
C++面向对象高效编程(第2版)
爱情心理学(新编本)
[美]罗伯特·J. 斯腾伯格 (美)凯琳·斯腾伯格 倪爱萍 译
C++面向对象高效编程(第2版)
黄金圈法则
[美]西蒙·斯涅克 著;磨铁文化 出品
C++面向对象高效编程(第2版)
最后一章
[美]厄尼·派尔
C++面向对象高效编程(第2版)
汤姆·索亚历险记 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]马克 吐温
C++面向对象高效编程(第2版)
富兰克林自传 名家全译本 改变无数人命运的励志传奇 埃隆马斯克反复推荐 赠富兰克林签名照及精美插图
[美]本杰明·富兰克林 著;李自修 译
C++面向对象高效编程(第2版)
国际大奖图画书系列 共11册(小老鼠的恐惧的大书,大灰狼,红豆与菲比,别烦我,下雪了 ,穿靴子的猫 ,先有蛋,绿 ,特别快递,如果你想看鲸鱼 ,一个部落的孩子 ) 麦克米伦世纪
[美]莱恩·史密斯 (英)埃米莉·格雷维特 (美)劳拉·瓦卡罗·等/文 (英)埃米莉·格雷维特 等/图 彭懿 杨玲玲 阿甲 孙慧阳 白薇 译