Item 31: 最小化文件之间的编译依赖 作者: 译者: 你进入到你的程序中,并对一个类的实现进行了细微的改变。提醒你一下,不是类的接口,只是实现,仅仅是 private 的东西。然后你重建(reb
当对象的引用和指针可以做到时就避免使用对象。仅需一个类型的声明,你就可以定义到这个类型的引用或指针。而定义一个类型的对象必须要存在这个类型的定义。只要你能做到,就用对类声明的依赖替代对类定义的依赖。
Item 28: 避免返回对象内部构件的“句柄” 假设你正在一个包含矩形的应用程序上工作。每一个矩形都可以用它的左上角和右下角表示出来。为了将一个 Rectangle 对象保持
Item 10: 让赋值运算符返回一个 *this 的引用 关于赋值的一件有意思的事情是你可以把它们穿成一串。 int x, y, z; x = y = z = 15;
第四章 设计和声明软件设计——使软件做你想让它做的事情的途径——典型地从相当概括的主意开始,但它们最后成为足够详细的允许开发的详细的接口。这些接口必须能
附录 B. 第二和第三版之间的 Item 映射 作者: 译者: 发布: Effective C++ 的第三版在很多方面与第二版不同,其中最引人注目的是它包含很多新的信息。然而,第二版的
Item 42: 理解 typename 的两个含义 作者: 译者: 发布: 问题:在下面的 template declarations(模板声明)中 class 和 typename 有什么不同?
第五章 实现 在极大程度上,为你的类(包括类模板)和函数(包括函数模板)提供正确的定义是战斗的关键性部分。一旦你得到正确的结果,相应的实现很大程度上就是直截了当的。但是仍然有一些注意事项需要当心。过早
Item 25: 考虑支持不抛异常的 swap swap 是一个有趣的函数。最早作为 STL 的一部分被引入,后来它成为异常安全编程(exception-safe programming)的支柱(参见
Item 23: 用非成员非友元函数取代成员函数 想象一个象征 web 浏览器的类。在大量的函数中,这样一个类也许会提供清空已下载成分的缓存。清空已访问 URLs 的历史,以及从系统移除所有 cook