Item 28: 避免返回对象内部构件的“句柄” 假设你正在一个包含矩形的应用程序上工作。每一个矩形都可以用它的左上角和右下角表示出来。为了将一个 Rectangle 对象保持
Item 23: 用非成员非友元函数取代成员函数 想象一个象征 web 浏览器的类。在大量的函数中,这样一个类也许会提供清空已下载成分的缓存。清空已访问 URLs 的历史,以及从系统移除所有 cook
Item 11: 在 operator= 中处理自赋值 当一个对象赋值给自己的时候就发生了一次自赋值: class Widget { ... }; Widget w; ... w = w;
Item 21: 当你必须返回一个对象时不要试图返回一个引用 一旦程序员抓住对象传值的效率隐忧(参见 Item 20),很多人就会成为狂热的圣战分子,誓要根除传值的罪恶,无论它隐藏多深。他们不屈不挠地
(接上篇) 但是也许你注意到无论是在栈上的还是在堆上的方法,为了从 operator* 返回的每一个 result,我们都不得不容忍一次构造函数的调用。也许你想起我们最初的目标是避免这样的构造函数调用
Item 10: 让赋值运算符返回一个 *this 的引用 关于赋值的一件有意思的事情是你可以把它们穿成一串。 int x, y, z; x = y = z = 15;
Item 17: 在一个独立的语句中将 new 出来的对象存入智能指针 假设我们有一个函数取得我们的处理优先级,而第二个函数根据优先级针对动态分配的 Widget 做一些处理: int priorit
Item 12: 拷贝一个对象的所有组成部分 在设计良好的面向对象系统中,为了压缩其对象内部的空间,仅留两个函数用于对象的拷贝:一般称为拷贝构造函数(copy constructor)和拷贝赋值运算符
第三章 资源管理资源是这样一些东西:一旦你不再使用它,你需要把它还给系统。如果你不这样做,有百害而无一利。在 C++ 程序中,最普遍使用的资源是动态分配的内存(dynamically allocate
Item 31: 最小化文件之间的编译依赖 作者: 译者: 你进入到你的程序中,并对一个类的实现进行了细微的改变。提醒你一下,不是类的接口,只是实现,仅仅是 private 的东西。然后你重建(reb