现在,假设 XYZ 公司的财富增长了,决定引进一种新机型,Model C。Model C 在某些方面与 Model A 和 Model B 不同。特别是,它的飞行不同。 XYZ 公司的程序员在 hi
现在,假设 XYZ 公司的财富增长了,决定引进一种新机型,Model C。Model C 在某些方面与 Model A 和 Model B 不同。特别是,它的飞行不同。 XYZ 公司的程序员在 hi
Item 36: 绝不要重定义一个 inherited non-virtual function(通过继承得到的非虚拟函数) 作者: 译者: 发布: 假设我告诉你 class(类)D 从 class(
Item 36: 绝不要重定义一个 inherited non-virtual function(通过继承得到的非虚拟函数) 作者: 译者: 发布: 假设我告诉你 class(类)D 从 class(
这一行为背后的根本原因是为了防止“当你在一个 library 或者 application framework 中创建一个新的 derived class 时,偶然地发生从遥远的 bas
Item 33: 避免覆盖(hiding)通过继承得到的名字 作者:译者: 发布: 莎士比亚有一个关于名字的说法。"What's in a name?" 他问道,"A r
第四章 设计和声明软件设计——使软件做你想让它做的事情的途径——典型地从相当概括的主意开始,但它们最后成为足够详细的允许开发的详细的接口。这些接口必须能
Item 35: 考虑可选的 virtual functions(虚拟函数)的替代方法 作者: 译者: 发布: 现在你工作在一个视频游戏上,你在游戏中为角色设计了一个 hierarchy(继承体系)。
The Strategy Pattern via tr1::function(经由 tr1::function 实现的策略模式) 一旦你习惯了 templates(模板)和 implicit int
Item 31: 最小化文件之间的编译依赖 作者: 译者: 你进入到你的程序中,并对一个类的实现进行了细微的改变。提醒你一下,不是类的接口,只是实现,仅仅是 private 的东西。然后你重建(reb