Item 10: 让赋值运算符返回一个 *this 的引用 关于赋值的一件有意思的事情是你可以把它们穿成一串。 int x, y, z; x = y = z = 15;
Item 17: 在一个独立的语句中将 new 出来的对象存入智能指针 假设我们有一个函数取得我们的处理优先级,而第二个函数根据优先级针对动态分配的 Widget 做一些处理: int priorit
Item 14: 谨慎考虑资源管理类的拷贝行为 Item 13 介绍了作为资源管理类支柱的 Resource Acquisition Is Initialization (RAII) 原则,并描述了
第三章 资源管理资源是这样一些东西:一旦你不再使用它,你需要把它还给系统。如果你不这样做,有百害而无一利。在 C++ 程序中,最普遍使用的资源是动态分配的内存(dynamically allocate
第一章 使自己习惯于 C++无论你的编程背景如何,对于 C++ 可能多少有些不习惯。这是一个有着极其丰富特性的威力强大的语言。但是在你能发挥它的威力并有效地使用这些特性之前,你必须使自己习惯于以 C+
Item 21: 当你必须返回一个对象时不要试图返回一个引用 一旦程序员抓住对象传值的效率隐忧(参见 Item 20),很多人就会成为狂热的圣战分子,誓要根除传值的罪恶,无论它隐藏多深。他们不屈不挠地
(接上篇) 但是也许你注意到无论是在栈上的还是在堆上的方法,为了从 operator* 返回的每一个 result,我们都不得不容忍一次构造函数的调用。也许你想起我们最初的目标是避免这样的构造函数调用
Item 11: 在 operator= 中处理自赋值 当一个对象赋值给自己的时候就发生了一次自赋值: class Widget { ... }; Widget w; ... w = w;
Item 28: 避免返回对象内部构件的“句柄” 假设你正在一个包含矩形的应用程序上工作。每一个矩形都可以用它的左上角和右下角表示出来。为了将一个 Rectangle 对象保持
Item 12: 拷贝一个对象的所有组成部分 在设计良好的面向对象系统中,为了压缩其对象内部的空间,仅留两个函数用于对象的拷贝:一般称为拷贝构造函数(copy constructor)和拷贝赋值运算符