explorer

万丈高楼平地起,勿在浮沙筑高台

0%

需要时刻牢记的是:函数的形参都是左值,即使它的类型是右值引用,它也是左值,因为它可以被取地址。

主要是区分什么是右值,满足以下二者之一即可: 1. 临时对象 2. 无法位于赋值符号右边的对象

阅读全文 »

传统指针具有以下缺陷: 1. 单从一个指针的声明,无法判定它是指向一个对象还是指向一个包含该对象的数组 2. 单从一个指针的声明,无法判定当不使用该指针时,是否需要释放它所指向对象所占用的资源 3. 当需要释放指针所指向对象的资源时,并不能明确的知道是该使用delete,还是使用其它专有的释放函数 4. 当需要使用delete释放资源时,到底是使用delete还是delete[],这需要小心使用,否则会造成内存泄漏或未定义行为 5. 当确定了释放机制时,也有可能写代码时一不小心,就造成了 double free 6. 当释放一个资源时,有可能还有其它指针(Dangling pointers)指向该资源,从而导致很多很难查的 BUG

使用智能指针变能够最大化的避免以上问题。

阅读全文 »