Item 14: 谨慎考虑资源管理类的拷贝行为 Item 13 介绍了作为资源管理类支柱的 Resource Acquisition Is Initialization (RAII) 原则,并描述了
第一章 使自己习惯于 C++无论你的编程背景如何,对于 C++ 可能多少有些不习惯。这是一个有着极其丰富特性的威力强大的语言。但是在你能发挥它的威力并有效地使用这些特性之前,你必须使自己习惯于以 C+
Item 15: 在资源管理类中准备访问裸资源(raw resources) 资源管理类真是太棒了。他们是你防御资源泄漏的防波堤,没有这样的泄漏是设计良好的系统的基本特征。在一个完美的世界中,你可以在
第三章 资源管理资源是这样一些东西:一旦你不再使用它,你需要把它还给系统。如果你不这样做,有百害而无一利。在 C++ 程序中,最普遍使用的资源是动态分配的内存(dynamically allocate
Item 25: 考虑支持不抛异常的 swap swap 是一个有趣的函数。最早作为 STL 的一部分被引入,后来它成为异常安全编程(exception-safe programming)的支柱(参见
Item 12: 拷贝一个对象的所有组成部分 在设计良好的面向对象系统中,为了压缩其对象内部的空间,仅留两个函数用于对象的拷贝:一般称为拷贝构造函数(copy constructor)和拷贝赋值运算符
因此该怎么做呢?我们还是需要一个方法,既使其他人能调用 swap,又能让我们得到更高效的模板特化版本。答案很简单。我们还是声明一个非成员 swap 来调用成员 swap,只是不再将那个非成员函数声明
Item 31: 最小化文件之间的编译依赖 作者: 译者: 你进入到你的程序中,并对一个类的实现进行了细微的改变。提醒你一下,不是类的接口,只是实现,仅仅是 private 的东西。然后你重建(reb
Item 28: 避免返回对象内部构件的“句柄” 假设你正在一个包含矩形的应用程序上工作。每一个矩形都可以用它的左上角和右下角表示出来。为了将一个 Rectangle 对象保持
第五章 实现 在极大程度上,为你的类(包括类模板)和函数(包括函数模板)提供正确的定义是战斗的关键性部分。一旦你得到正确的结果,相应的实现很大程度上就是直截了当的。但是仍然有一些注意事项需要当心。过早