-
读书笔记 effective c++ Item 14 对资源管理类的拷贝行为要谨慎
1. 自己实现一个资源管理类 Item 13中介绍了 “资源获取之时也是初始化之时(RAII)”的概念,这个概念被当作资源管理类的“脊柱“,也描述了auto_ptr和tr1::shared_ptr是如何用堆资源来表现这个概念的。然而并不是所有资源都是在堆上创建的,对于这种资源,像auto_ptr和tr1::shared_ptr这样的智...
作者:小编 日期:2026.06.22 分类:类库 1300 -
Git示例教程 - 合并多次提交为一次
相关命令:# 把当前分支commit提交之后的所有提交合并为一次 # 其实该命令可以做很多事,我们这里只讲合并提交 git rebase -i <commit>情景模拟:先执行下面的命令,创建一个测试用的Git仓库:# 创建一个空的Git仓库 mkdir repo cd repo git init # 初始提交 touch a.txt git add . git commit -m "initial" # 测试提交 for i in {1....
作者:小编 日期:2026.06.22 分类:语言 1858 -
读书笔记 effective c++ Item 13 用对象来管理资源
1.不要手动释放从函数返回的堆资源假设你正在处理一个模拟Investment的程序库,不同的Investmetn类型从Investment基类继承而来,1 class Investment { ... }; // root class of hierarchy of2 3 // investment types进一步假设这个程序库通过...
作者:小编 日期:2026.06.22 分类:文档 1882 -
读书笔记 effective c++ Item 12 拷贝对象的所有部分
1.默认构造函数介绍在设计良好的面向对象系统中,会将对象的内部进行封装,只有两个函数可以拷贝对象:拷贝构造函数和拷贝赋值运算符。我们把这两个函数统一叫做拷贝函数。从Item5中,我们得知,如果需要的话编译器会为你生成这两个拷贝函数,并且编译器生成的版本能够精确的做到你想做的:它们拷贝了对象的所有数据。2.自己实现构造函数有可能出现问题...
作者:小编 日期:2026.06.22 分类:语言 1872 -
读书笔记 effective c++ Item 11 在operator=中处理自我赋值
1.自我赋值是如何发生的当一个对象委派给自己的时候,自我赋值就会发生:1 class Widget { ... };2 3 Widget w;4 5 ...6 7 w = w; // assignment to self、这看上去是愚蠢的,但这是合法的,所以请放心,客户端是可以这么做的。此外,自身赋值也并不总是很容易的能够被辨别出来。...
作者:小编 日期:2026.06.22 分类:手册 1930 -
读书笔记 effective c++ Item 10 让赋值运算符返回指向*this的引用
一个关于赋值的有趣的事情是你可以将它们链在一起:1 int x, y, z;2 3 x = y = z = 15; // chain of assignments同样有趣的是赋值采用右结合律,所以上面的赋值链被解析成下面这个样子:1 x = (y = (z = 15));在这里,15被赋值给z,然后赋值的结果(更新的z)被赋值给y,再...
作者:小编 日期:2026.06.22 分类:系统 668 -
读书笔记 effective c++ Item 9 绝不要在构造函数或者析构函数中调用虚函数
1.关于构造函数的一个违反直觉的行为我会以重复标题开始:你不应该在构造或者析构的过程中调用虚函数,因为这些调用的结果会和你想的不一样。如果你同时是一个java或者c#程序员,那么请着重注意这个条款,因为这是c++同它们不一样的地方。假设你已经有一个为股票交易建模的类继承体系,它可以买卖股票等。这些交易的可审计性很重要,所以每次交易对象...
作者:小编 日期:2026.06.22 分类:系统 167 -
读书笔记 effective c++ Item 8 不要让异常(exceptions)离开析构函数
1.为什么c++不喜欢析构函数抛出异常C++并没有禁止析构函数出现异常,但是它肯定不鼓励这么做。这是有原因的,考虑下面的代码: 1 class Widget { 2 3 public: 4 5 ... 6 7 ~Widget() { ... } // assume this might emit an exception 8...
作者:小编 日期:2026.06.22 分类:工具 1517 -
读书笔记 effective c++ Item 7 在多态基类中将析构函数声明为虚析构函数
1. 继承体系中关于对象释放遇到的问题描述1.1 手动释放关于时间记录有很多种方法,因此为不同的计时方法创建一个TimeKeeper基类和一些派生类就再合理不过了: 1 class TimeKeeper { 2 3 public: 4 5 TimeKeeper(); 6 7 ~TimeKeeper(); 8 9 ...10 1...
作者:小编 日期:2026.06.22 分类:教程 584 -
读书笔记 effective c++ Item 6 如果你不想使用编译器自动生成的函数,你需要明确拒绝
问题描述-阻止对象的拷贝 现实生活中的房产中介卖房子,一个服务于这个中介的软件系统很自然的会有一个表示要被销售的房屋的类:1 class HomeForSale { ... }; 每个房产中介会立刻指出来,要销售房屋的每个属性都是唯一的,没有两个完全一样的房屋。在这种情况下,拷贝一个HomeForSale对象就没有任何意义了。你在怎么...
作者:小编 日期:2026.06.22 分类:类库 151









