C++ API设计

C++ API设计
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] , , ,
2013-08
版次: 1
ISBN: 9787115322999
定价: 89.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 380页
字数: 560千字
正文语种: 简体中文
原版书名: API Design for C++
188人买过
  •   现代软件开发中的一大难题就是如何编写优质的API。API负责为某个组件提供逻辑接口并隐藏该模块的内部细节。多数程序员依靠的是经验和冒险,从而很难达到健壮、高效、稳定、可扩展性强的要求。Martin Reddy博士在自己多年经验基础之上,对于不同API风格与模式,总结出了API设计的种种最佳策略,着重针对大规模长期开发项目,辅以翔实的代码范例,从而有助于设计决策的成功实施,以及软件项目的健壮性及稳定性的实现。
      《图灵程序设计丛书:C++ API设计》主要内容:
      API简介及其特点
      API的一些设计模式及惯用法
      影响API的设计的一些C++特性
      把控API的风格与性能
      版本控制与文档化的实现
      各种优秀的测试方法
      如何创建脚本绑定,以便API能被诸如Ruby和Python等语言调用
      可扩展性API的基本实现方式
      类库的编译器实现   Martin Reddy,博士是软件行业的一名老兵,有着15年以上的从业经验,共撰写过40多篇论文,拥有3项软件专利,并与他人合著了Level of Detail for 3D Graphics。另外,他还是ACM以及IEEE的会员。
      早年,他曾在SRI International供职5年,主要从事分布式三维地形可视化技术方面的工作,他成功创建了在Web上描述3D地球空间信息模型的ISO标准,并且还连续两年被选为Web3D协会的会长。
      他曾在Pixar动画工作室工作过6年,担任内部动画系统的首席工程师,设计并实现了很多高性能API,这些API在一些奥斯卡获奖及提名影片的制作中都发挥了关键作用,这些影片有《海底总动员》、《超人总动员》、《赛车总动员》、《料理鼠王》,以及《机器人总动员》等。
      他还开办了一家咨询公司Code Reddy,为各家软件公司提供技术咨询,主要客户有Linden Lab和Planet 9 Studios,为大型在线3D虚拟世界《第二人生》设计了API并改善了其基本架构。
      现在他担任ToyTalk公司的首席技术官。 第1章 API简介  
    1.1  什么是API  
    1.1.1  契约和承包人  
    1.1.2  C++中的API  
    1.2  API设计上有什么不同  
    1.3  为什么使用API  
    1.3.1  更健壮的代码  
    1.3.2  代码复用  
    1.3.3  并行开发  
    1.4  何时应当避免使用API  
    1.5  API示例  
    1.5.1  API层次  
    1.5.2  真实示例  
    1.6  文件格式和网络协议  
    1.7  关于本书  

    第2章 特征  
    2.1  问题域建模  
    2.1.1  提供良好的抽象  
    2.1.2  关键对象的建模  
    2.2  隐藏实现细节  
    2.2.1  物理隐藏:声明与定义  
    2.2.2  逻辑隐藏:封装  
    2.2.3  隐藏成员变量  
    2.2.4  隐藏实现方法  
    2.2.5  隐藏实现类  
    2.3  最小完备性  
    2.3.1  不要过度承诺  
    2.3.2  谨慎添加虚函数  
    2.3.3  便捷API  
    2.4  易用性  
    2.4.1  可发现性  
    2.4.2  不易误用  
    2.4.3  一致性  
    2.4.4  正交  
    2.4.5  健壮的资源分配  
    2.4.6  平台独立  
    2.5  松耦合  
    2.5.1  仅通过名字耦合  
    2.5.2  降低类耦合  
    2.5.3  刻意的冗余  
    2.5.4  管理器类  
    2.5.5  回调、观察者和通知  
    2.6  稳定的、文档详细且经过测试的API  

    第3章 模式  
    3.1  Pimpl惯用法  
    3.1.1  使用Pimpl  
    3.1.2  复制语义  
    3.1.3  Pimpl与智能指针  
    3.1.4  Pimpl的优点  
    3.1.5  Pimpl的缺点  
    3.1.6  C语言的不透明指针  
    3.2  单例  
    3.2.1  在C++中实现单例  
    3.2.2  使单例线程安全  
    3.2.3  单例与依赖注入  
    3.2.4  单例与单一状态  
    3.2.5  单例与会话状态  
    3.3  工厂模式  
    3.3.1  抽象基类  
    3.3.2  工厂示例  
    3.3.3  扩展工厂示例  
    3.4  API包装器模式  
    3.4.1  代理模式  
    3.4.2  适配器模式  
    3.4.3  外观模式  
    3.5  观察者模式  
    3.5.1  MVC架构  
    3.5.2  实现观察者模式  
    3.5.3  推与拉观察者  

    第4章 设计  
    4.1  良好设计的例子  
    4.1.1  积累技术债  
    4.1.2  偿还技术债  
    4.1.3  为长期而设计  
    4.2  收集功能性需求  
    4.2.1  什么是功能性需求  
    4.2.2  功能性需求举例  
    4.2.3  维护需求  
    4.3  创建用例  
    4.3.1  开发用例  
    4.3.2  用例模板  
    4.3.3  编写高质量用例  
    4.3.4   需求与敏捷开发  
    4.4  API设计的元素  
    4.5  架构设计  
    4.5.1  架构的开发  
    4.5.2  架构的约束  
    4.5.3  识别主要抽象  
    4.5.4  创造关键对象  
    4.5.5  架构模式  
    4.5.6  架构的交流  
    4.6  类的设计  
    4.6.1  面向对象概念  
    4.6.2  类设计选项  
    4.6.3  使用继承  
    4.6.4  Liskov替换原则  
    4.6.5  开放?封闭原则  
    4.6.6  迪米特法则  
    4.6.7  类的命名  
    4.7  函数设计  
    4.7.1  函数设计选项  
    4.7.2  函数命名  
    4.7.3  函数参数  
    4.7.4  错误处理  

    第5章 风格  
    5.1  纯C API  
    5.1.1  ANSI C特性  
    5.1.2  ANSI C API的优点  
    5.1.3  使用ANSI C编写API  
    5.1.4  从C++中调用C函数  
    5.1.5  案例研究:FMOD C API  
    5.2  面向对象的C++ API  
    5.2.1  面向对象API的优点  
    5.2.2  面向对象API的缺点  
    5.2.3  案例研究:FMOD C++ API  
    5.3  基于模板的API  
    5.3.1  基于模板的API示例  
    5.3.2  模板与宏  
    5.3.3  基于模板的API的优点  
    5.3.4  基于模板的API的缺点  
    5.4  数据驱动型API  
    5.4.1  数据驱动型Web服务  
    5.4.2  数据驱动型API的优点  
    5.4.3  数据驱动API的缺点  
    5.4.4  支持可变参数列表  
    5.4.5  案例研究:FMOD数据驱动型API  

    第6章 C++用法  
    6.1  命名空间  
    6.2  构造函数和赋值  
    6.2.1  控制编译器生成的函数  
    6.2.2  定义构造函数和赋值操作符  
    6.2.3  explicit关键字  
    6.3  const正确性  
    6.3.1  方法的const正确性  
    6.3.2  参数的const正确性  
    6.3.3  返回值的const正确性  
    6.4  模板  
    6.4.1  模板术语  
    6.4.2  隐式实例化API设计  
    6.4.3  显式实例化API设计  
    6.5  操作符重载  
    6.5.1  可重载的操作符  
    6.5.2  自由操作符与成员操作符  
    6.5.3  为类添加操作符  
    6.5.4  操作符语法  
    6.5.5  转换操作符  
    6.6  函数参数  
    6.6.1  指针与引用参数  
    6.6.2  默认参数  
    6.7  避免使用#define定义常量  
    6.8  避免使用友元  
    6.9  导出符号  
    6.10  编码规范  

    第7章 性能  
    7.1  通过const引用传递输入参数  
    7.2  最小化#include依赖  
    7.2.1  避免"无所不包型"头文件  
    7.2.2  前置声明  
    7.2.3  冗余的#include警戒语句  
    7.3  声明常量  
    7.4  初始化列表  
    7.5  内存优化  
    7.6  除非需要,勿用内联  
    7.7  写时复制  
    7.8  迭代元素  
    7.8.1  迭代器  
    7.8.2  随机访问  
    7.8.3  数组引用  
    7.9  性能分析  
    7.9.1  时效性分析  
    7.9.2  基于内存的分析  
    7.9.3  多线程分析  

    第8章 版本控制  
    8.1  版本号  
    8.1.1  版本号的意义  
    8.1.2  小众的编号方案  
    8.1.3  提供API的版本信息  
    8.2  软件分支策略  
    8.2.1  分支策略  
    8.2.2  分支方针  
    8.2.3  API和并行分支  
    8.2.4  文件格式和并行发布产品  
    8.3  API的生命周期  
    8.4  兼容性级别  
    8.4.1  向后兼容性  
    8.4.2  功能兼容性  
    8.4.3  源代码兼容性  
    8.4.4  二进制兼容性  
    8.4.5  向前兼容性  
    8.5  怎样维护向后兼容性  
    8.5.1  添加功能  
    8.5.2  修改功能  
    8.5.3  弃用功能  
    8.5.4  移除功能  
    8.6  API审查  
    8.6.1  API审查的目的  
    8.6.2  API预发布审查  
    8.6.3  API预提交审查  

    第9章 文档  
    9.1  编写文档的理由  
    9.1.1  定义行为  
    9.1.2  为接口契约编写文档  
    9.1.3  告知行为的改变  
    9.1.4  文档涉及的内容  
    9.2  文档的类型  
    9.2.1  自动生成的API文档  
    9.2.2  概述文档  
    9.2.3  示例和教程  
    9.2.4  发布说明  
    9.2.5   授权信息  
    9.3  文档可用性  
    9.4  使用Doxygen  
    9.4.1  配置文件  
    9.4.2  注释风格和命令  
    9.4.3  API注释  
    9.4.4  文件注释  
    9.4.5  类注释  
    9.4.6  方法注释  
    9.4.7  枚举注释  
    9.4.8  带有文档的示例头文件  

    第10章 测试  
    10.1  编写测试的理由  
    10.2  API测试的类型  
    10.2.1  单元测试  
    10.2.2  集成测试  
    10.2.3  性能测试  
    10.3  编写良好的测试  
    10.3.1  良好测试的特征  
    10.3.2  测试对象  
    10.3.3  关注测试工作量  
    10.3.4  与QA一起工作  
    10.4  编写可测试的代码  
    10.4.1  测试驱动开发  
    10.4.2  桩对象和模拟对象  
    10.4.3  测试私有代码  
    10.4.4  使用断言  
    10.4.5  契约编程  
    10.4.6  记录并重放功能  
    10.4.7  支持国际化  
    10.5  自动化测试工具  
    10.5.1  自动化测试框架  
    10.5.2  代码覆盖率  
    10.5.3  缺陷跟踪系统  
    10.5.4  持续构建系统  

    第11章 脚本化  
    11.1  添加脚本绑定  
    11.1.1  扩充或嵌入  
    11.1.2  脚本化的优点  
    11.1.3  语言兼容性问题  
    11.1.4  跨越语言障碍  
    11.2  脚本绑定技术  
    11.2.1  Boost Python  
    11.2.2  SWIG  
    11.2.3  Python-SIP  
    11.2.4  COM自动化  
    11.2.5  CORBA  
    11.3  使用Boost Python添加Python绑定  
    11.3.1  构建Boost Python  
    11.3.2  使用Boost Python包装C++ API  
    11.3.3  构造函数  
    11.3.4  扩充Python API  
    11.3.5  C++中的继承  
    11.3.6  跨语言多态  
    11.3.7  支持迭代器  
    11.3.8  综合应用  
    11.4  使用SWIG添加Ruby绑定  
    11.4.1  使用SWIG包装C++ API  
    11.4.2  调整Ruby API  
    11.4.3  构造函数  
    11.4.4  扩充Ruby API  
    11.4.5  C++中的继承  
    11.4.6  跨语言多态  
    11.4.7  综合应用  

    第12章 可扩展性  
    12.1  通过插件扩展  
    12.1.1  插件模型概览  
    12.1.2  插件系统设计问题  
    12.1.3  以C++实现插件  
    12.1.4  插件API  
    12.1.5  插件示例  
    12.1.6  插件管理器  
    12.1.7  插件版本控制  
    12.2  通过继承扩展  
    12.2.1  添加功能  
    12.2.2  修改功能  
    12.2.3  继承与STL  
    12.2.4  继承与枚举  
    12.2.5  访问者模式  
    12.2.6  禁止子类化  
    12.3  通过模板扩展  
    12.3.1  基于策略的模板  
    12.3.2  奇特的递归模板模式  
    附录A  库  
    参考文献  
    索引
  • 内容简介:
      现代软件开发中的一大难题就是如何编写优质的API。API负责为某个组件提供逻辑接口并隐藏该模块的内部细节。多数程序员依靠的是经验和冒险,从而很难达到健壮、高效、稳定、可扩展性强的要求。Martin Reddy博士在自己多年经验基础之上,对于不同API风格与模式,总结出了API设计的种种最佳策略,着重针对大规模长期开发项目,辅以翔实的代码范例,从而有助于设计决策的成功实施,以及软件项目的健壮性及稳定性的实现。
      《图灵程序设计丛书:C++ API设计》主要内容:
      API简介及其特点
      API的一些设计模式及惯用法
      影响API的设计的一些C++特性
      把控API的风格与性能
      版本控制与文档化的实现
      各种优秀的测试方法
      如何创建脚本绑定,以便API能被诸如Ruby和Python等语言调用
      可扩展性API的基本实现方式
      类库的编译器实现
  • 作者简介:
      Martin Reddy,博士是软件行业的一名老兵,有着15年以上的从业经验,共撰写过40多篇论文,拥有3项软件专利,并与他人合著了Level of Detail for 3D Graphics。另外,他还是ACM以及IEEE的会员。
      早年,他曾在SRI International供职5年,主要从事分布式三维地形可视化技术方面的工作,他成功创建了在Web上描述3D地球空间信息模型的ISO标准,并且还连续两年被选为Web3D协会的会长。
      他曾在Pixar动画工作室工作过6年,担任内部动画系统的首席工程师,设计并实现了很多高性能API,这些API在一些奥斯卡获奖及提名影片的制作中都发挥了关键作用,这些影片有《海底总动员》、《超人总动员》、《赛车总动员》、《料理鼠王》,以及《机器人总动员》等。
      他还开办了一家咨询公司Code Reddy,为各家软件公司提供技术咨询,主要客户有Linden Lab和Planet 9 Studios,为大型在线3D虚拟世界《第二人生》设计了API并改善了其基本架构。
      现在他担任ToyTalk公司的首席技术官。
  • 目录:
    第1章 API简介  
    1.1  什么是API  
    1.1.1  契约和承包人  
    1.1.2  C++中的API  
    1.2  API设计上有什么不同  
    1.3  为什么使用API  
    1.3.1  更健壮的代码  
    1.3.2  代码复用  
    1.3.3  并行开发  
    1.4  何时应当避免使用API  
    1.5  API示例  
    1.5.1  API层次  
    1.5.2  真实示例  
    1.6  文件格式和网络协议  
    1.7  关于本书  

    第2章 特征  
    2.1  问题域建模  
    2.1.1  提供良好的抽象  
    2.1.2  关键对象的建模  
    2.2  隐藏实现细节  
    2.2.1  物理隐藏:声明与定义  
    2.2.2  逻辑隐藏:封装  
    2.2.3  隐藏成员变量  
    2.2.4  隐藏实现方法  
    2.2.5  隐藏实现类  
    2.3  最小完备性  
    2.3.1  不要过度承诺  
    2.3.2  谨慎添加虚函数  
    2.3.3  便捷API  
    2.4  易用性  
    2.4.1  可发现性  
    2.4.2  不易误用  
    2.4.3  一致性  
    2.4.4  正交  
    2.4.5  健壮的资源分配  
    2.4.6  平台独立  
    2.5  松耦合  
    2.5.1  仅通过名字耦合  
    2.5.2  降低类耦合  
    2.5.3  刻意的冗余  
    2.5.4  管理器类  
    2.5.5  回调、观察者和通知  
    2.6  稳定的、文档详细且经过测试的API  

    第3章 模式  
    3.1  Pimpl惯用法  
    3.1.1  使用Pimpl  
    3.1.2  复制语义  
    3.1.3  Pimpl与智能指针  
    3.1.4  Pimpl的优点  
    3.1.5  Pimpl的缺点  
    3.1.6  C语言的不透明指针  
    3.2  单例  
    3.2.1  在C++中实现单例  
    3.2.2  使单例线程安全  
    3.2.3  单例与依赖注入  
    3.2.4  单例与单一状态  
    3.2.5  单例与会话状态  
    3.3  工厂模式  
    3.3.1  抽象基类  
    3.3.2  工厂示例  
    3.3.3  扩展工厂示例  
    3.4  API包装器模式  
    3.4.1  代理模式  
    3.4.2  适配器模式  
    3.4.3  外观模式  
    3.5  观察者模式  
    3.5.1  MVC架构  
    3.5.2  实现观察者模式  
    3.5.3  推与拉观察者  

    第4章 设计  
    4.1  良好设计的例子  
    4.1.1  积累技术债  
    4.1.2  偿还技术债  
    4.1.3  为长期而设计  
    4.2  收集功能性需求  
    4.2.1  什么是功能性需求  
    4.2.2  功能性需求举例  
    4.2.3  维护需求  
    4.3  创建用例  
    4.3.1  开发用例  
    4.3.2  用例模板  
    4.3.3  编写高质量用例  
    4.3.4   需求与敏捷开发  
    4.4  API设计的元素  
    4.5  架构设计  
    4.5.1  架构的开发  
    4.5.2  架构的约束  
    4.5.3  识别主要抽象  
    4.5.4  创造关键对象  
    4.5.5  架构模式  
    4.5.6  架构的交流  
    4.6  类的设计  
    4.6.1  面向对象概念  
    4.6.2  类设计选项  
    4.6.3  使用继承  
    4.6.4  Liskov替换原则  
    4.6.5  开放?封闭原则  
    4.6.6  迪米特法则  
    4.6.7  类的命名  
    4.7  函数设计  
    4.7.1  函数设计选项  
    4.7.2  函数命名  
    4.7.3  函数参数  
    4.7.4  错误处理  

    第5章 风格  
    5.1  纯C API  
    5.1.1  ANSI C特性  
    5.1.2  ANSI C API的优点  
    5.1.3  使用ANSI C编写API  
    5.1.4  从C++中调用C函数  
    5.1.5  案例研究:FMOD C API  
    5.2  面向对象的C++ API  
    5.2.1  面向对象API的优点  
    5.2.2  面向对象API的缺点  
    5.2.3  案例研究:FMOD C++ API  
    5.3  基于模板的API  
    5.3.1  基于模板的API示例  
    5.3.2  模板与宏  
    5.3.3  基于模板的API的优点  
    5.3.4  基于模板的API的缺点  
    5.4  数据驱动型API  
    5.4.1  数据驱动型Web服务  
    5.4.2  数据驱动型API的优点  
    5.4.3  数据驱动API的缺点  
    5.4.4  支持可变参数列表  
    5.4.5  案例研究:FMOD数据驱动型API  

    第6章 C++用法  
    6.1  命名空间  
    6.2  构造函数和赋值  
    6.2.1  控制编译器生成的函数  
    6.2.2  定义构造函数和赋值操作符  
    6.2.3  explicit关键字  
    6.3  const正确性  
    6.3.1  方法的const正确性  
    6.3.2  参数的const正确性  
    6.3.3  返回值的const正确性  
    6.4  模板  
    6.4.1  模板术语  
    6.4.2  隐式实例化API设计  
    6.4.3  显式实例化API设计  
    6.5  操作符重载  
    6.5.1  可重载的操作符  
    6.5.2  自由操作符与成员操作符  
    6.5.3  为类添加操作符  
    6.5.4  操作符语法  
    6.5.5  转换操作符  
    6.6  函数参数  
    6.6.1  指针与引用参数  
    6.6.2  默认参数  
    6.7  避免使用#define定义常量  
    6.8  避免使用友元  
    6.9  导出符号  
    6.10  编码规范  

    第7章 性能  
    7.1  通过const引用传递输入参数  
    7.2  最小化#include依赖  
    7.2.1  避免"无所不包型"头文件  
    7.2.2  前置声明  
    7.2.3  冗余的#include警戒语句  
    7.3  声明常量  
    7.4  初始化列表  
    7.5  内存优化  
    7.6  除非需要,勿用内联  
    7.7  写时复制  
    7.8  迭代元素  
    7.8.1  迭代器  
    7.8.2  随机访问  
    7.8.3  数组引用  
    7.9  性能分析  
    7.9.1  时效性分析  
    7.9.2  基于内存的分析  
    7.9.3  多线程分析  

    第8章 版本控制  
    8.1  版本号  
    8.1.1  版本号的意义  
    8.1.2  小众的编号方案  
    8.1.3  提供API的版本信息  
    8.2  软件分支策略  
    8.2.1  分支策略  
    8.2.2  分支方针  
    8.2.3  API和并行分支  
    8.2.4  文件格式和并行发布产品  
    8.3  API的生命周期  
    8.4  兼容性级别  
    8.4.1  向后兼容性  
    8.4.2  功能兼容性  
    8.4.3  源代码兼容性  
    8.4.4  二进制兼容性  
    8.4.5  向前兼容性  
    8.5  怎样维护向后兼容性  
    8.5.1  添加功能  
    8.5.2  修改功能  
    8.5.3  弃用功能  
    8.5.4  移除功能  
    8.6  API审查  
    8.6.1  API审查的目的  
    8.6.2  API预发布审查  
    8.6.3  API预提交审查  

    第9章 文档  
    9.1  编写文档的理由  
    9.1.1  定义行为  
    9.1.2  为接口契约编写文档  
    9.1.3  告知行为的改变  
    9.1.4  文档涉及的内容  
    9.2  文档的类型  
    9.2.1  自动生成的API文档  
    9.2.2  概述文档  
    9.2.3  示例和教程  
    9.2.4  发布说明  
    9.2.5   授权信息  
    9.3  文档可用性  
    9.4  使用Doxygen  
    9.4.1  配置文件  
    9.4.2  注释风格和命令  
    9.4.3  API注释  
    9.4.4  文件注释  
    9.4.5  类注释  
    9.4.6  方法注释  
    9.4.7  枚举注释  
    9.4.8  带有文档的示例头文件  

    第10章 测试  
    10.1  编写测试的理由  
    10.2  API测试的类型  
    10.2.1  单元测试  
    10.2.2  集成测试  
    10.2.3  性能测试  
    10.3  编写良好的测试  
    10.3.1  良好测试的特征  
    10.3.2  测试对象  
    10.3.3  关注测试工作量  
    10.3.4  与QA一起工作  
    10.4  编写可测试的代码  
    10.4.1  测试驱动开发  
    10.4.2  桩对象和模拟对象  
    10.4.3  测试私有代码  
    10.4.4  使用断言  
    10.4.5  契约编程  
    10.4.6  记录并重放功能  
    10.4.7  支持国际化  
    10.5  自动化测试工具  
    10.5.1  自动化测试框架  
    10.5.2  代码覆盖率  
    10.5.3  缺陷跟踪系统  
    10.5.4  持续构建系统  

    第11章 脚本化  
    11.1  添加脚本绑定  
    11.1.1  扩充或嵌入  
    11.1.2  脚本化的优点  
    11.1.3  语言兼容性问题  
    11.1.4  跨越语言障碍  
    11.2  脚本绑定技术  
    11.2.1  Boost Python  
    11.2.2  SWIG  
    11.2.3  Python-SIP  
    11.2.4  COM自动化  
    11.2.5  CORBA  
    11.3  使用Boost Python添加Python绑定  
    11.3.1  构建Boost Python  
    11.3.2  使用Boost Python包装C++ API  
    11.3.3  构造函数  
    11.3.4  扩充Python API  
    11.3.5  C++中的继承  
    11.3.6  跨语言多态  
    11.3.7  支持迭代器  
    11.3.8  综合应用  
    11.4  使用SWIG添加Ruby绑定  
    11.4.1  使用SWIG包装C++ API  
    11.4.2  调整Ruby API  
    11.4.3  构造函数  
    11.4.4  扩充Ruby API  
    11.4.5  C++中的继承  
    11.4.6  跨语言多态  
    11.4.7  综合应用  

    第12章 可扩展性  
    12.1  通过插件扩展  
    12.1.1  插件模型概览  
    12.1.2  插件系统设计问题  
    12.1.3  以C++实现插件  
    12.1.4  插件API  
    12.1.5  插件示例  
    12.1.6  插件管理器  
    12.1.7  插件版本控制  
    12.2  通过继承扩展  
    12.2.1  添加功能  
    12.2.2  修改功能  
    12.2.3  继承与STL  
    12.2.4  继承与枚举  
    12.2.5  访问者模式  
    12.2.6  禁止子类化  
    12.3  通过模板扩展  
    12.3.1  基于策略的模板  
    12.3.2  奇特的递归模板模式  
    附录A  库  
    参考文献  
    索引
查看详情
其他版本 / 全部 (1)
系列丛书 / 更多
C++ API设计
机器学习实战
[美]Peter Harrington 著;李锐、李鹏、曲亚东 译
C++ API设计
图灵程序设计丛书:Python基础教程
[挪威]Magnus Lie Hetland 著;司维、曾军崴、谭颖华 译
C++ API设计
JavaScript高级程序设计(第3版)
[美]Nicholas C.Zakas 著;李松峰、曹力 译
C++ API设计
Python编程:从入门到实践
[美]埃里克·马瑟斯(Eric Matthes) 著;袁国忠 译
C++ API设计
R语言实战(第2版)
[美]卡巴科弗(Robert I. Kabacoff) 著;王小宁、刘撷芯、黄俊文 译
C++ API设计
算法(第4版)
[美]Robert、[美]Kevin Wayne 著;谢路云 译
C++ API设计
大数据:互联网大规模数据挖掘与分布式处理
[美]Anand、[美]Jeffrey David Ullman 著;王斌 译
C++ API设计
Spark快速大数据分析
[美]卡劳(Holden Karau)、[美]肯维尼斯科(Andy Konwinski)、[美]温德尔(Patrick Wendell)、[加拿大]扎哈里亚(Matei Zaharia) 著;王道远 译
C++ API设计
MySQL必知必会
[英]福塔(Ben Forta) 著;刘晓霞、钟鸣 译
C++ API设计
Objective-C基础教程 第2版
[美]Scott、[美]Waqar、[美]Mark Dalrymple 著;周庆成 译
C++ API设计
图解HTTP
[日]上野·宣 著;于均良 译
C++ API设计
算法图解
袁国忠 译
相关图书 / 更多
C++ API设计
C++边做边学
冯玉芬;周树功;母景琴;詹胜
C++ API设计
C++程序设计基础教程 第2版
刘厚泉 李政伟 葛欣
C++ API设计
C++编程这样学
胡芳
C++ API设计
C++程序设计案例教程(线上线下混合版)
杨卫明;李晓虹
C++ API设计
C++之旅(第3版)
[美]Bjarne Stroustrup(本贾尼 斯特劳斯特鲁普
C++ API设计
C++20代码整洁之道:可持续软件开发模式实践(原书第2版)
[德]斯蒂芬·罗斯(Stephan Roth)
C++ API设计
C++ Core Guidelines解析
杨文波 译;[德]赖纳·格林(Rainer Grimm)著 吴咏炜;何荣华;张云潮
C++ API设计
C++程序设计(第4版)
周会平;徐建军;王挺
C++ API设计
C++开发案例精讲
杨国兴 著
C++ API设计
C++程序设计实践教程(新国标微课版)
马光志
C++ API设计
C++程序设计基础与实践
牛园园;韩洁琼;李晓芳;吴成宇
C++ API设计
C++程序设计基础教程
丁卫平 程学云 陈文兰 主编;任红建 沈晓红 文万志 副主编
您可能感兴趣 / 更多
C++ API设计
无辜者的谎言(相信我!看到结局你一定会头皮发麻;全美读者推荐的悬疑神作,GOODREADS高分作品)
[美]A.R.托雷 著;梁颂宇 译;星文文化 出品
C++ API设计
孩子,把你的手给我1:怎么说孩子才爱听,怎么教孩子才肯学?帮助每一位3-12岁孩子的父母结束与孩子的所有冲突!
[美]海姆·G.吉诺特
C++ API设计
哲学、历史与僭政——重审施特劳斯与科耶夫之争
[美]弗罗斯特(Bryan-Paul Frost) 编;[美]伯恩斯(Timothy W. Burns)
C++ API设计
怎样做成大事
[美]丹·加德纳(Dan Gardner) 著;贾拥民 译;湛庐文化 出品;[丹麦]傅以斌(Bent Flyvbjerg)
C++ API设计
力量训练的科学基础与实践应用(第三版)
[美]弗拉基米尔· M.扎齐奥尔斯基;[美]威廉·J.克雷默;[美]安德鲁· C.弗赖伊
C++ API设计
1200年希腊罗马神话
[美]伊迪丝·汉密尔顿
C++ API设计
爱情心理学(新编本)
[美]罗伯特·J. 斯腾伯格 (美)凯琳·斯腾伯格 倪爱萍 译
C++ API设计
黄金圈法则
[美]西蒙·斯涅克 著;磨铁文化 出品
C++ API设计
最后一章
[美]厄尼·派尔
C++ API设计
汤姆·索亚历险记 彩图注音版 一二三四年级5-6-7-8-9岁小学生课外阅读经典 儿童文学无障碍有声伴读世界名著童话故事
[美]马克 吐温
C++ API设计
富兰克林自传 名家全译本 改变无数人命运的励志传奇 埃隆马斯克反复推荐 赠富兰克林签名照及精美插图
[美]本杰明·富兰克林 著;李自修 译
C++ API设计
国际大奖图画书系列 共11册(小老鼠的恐惧的大书,大灰狼,红豆与菲比,别烦我,下雪了 ,穿靴子的猫 ,先有蛋,绿 ,特别快递,如果你想看鲸鱼 ,一个部落的孩子 ) 麦克米伦世纪
[美]莱恩·史密斯 (英)埃米莉·格雷维特 (美)劳拉·瓦卡罗·等/文 (英)埃米莉·格雷维特 等/图 彭懿 杨玲玲 阿甲 孙慧阳 白薇 译