智能指针能不能传出去和智能指针能不能传进来
智能指针对于C++使用者来说,应该是非常友好了,C++的指针特性使得C++可以非常方便的操作内存,但是如果不能很好的使用,他也会给使用者带来一些困扰,比如C++维护的指针能不能传出去呢?我们有时候需要将一个智能指针维护的指针传出去,有时是因为接口无法改变,有时候是因为需要赋值给普通指针,这时候可以想一下,如果指针传出去了,那么谁来维护传出去的指针呢,万一传出去的智能发生了复制怎么办,这时候我们析构智能智能维护的内存时,被复制的指针如果还在使用,就会造成大问题,同样道理,我们也不能将指针直接传给智能指针,不是C++标准不允许,而是跟上面一样,加入我们将指针传给智能指针,那么原始的指针谁来维护呢,如果原始的指针再发生拷贝操作怎么办呢?因此,基于稳定性和安全性,俗称鲁棒性的考虑,我们一般情况下禁止将智能指针维护的指针传入传出,当然也有特殊情况,不过即使发生了特殊情况也要慎之又慎,以防指针维护的内存被智能指针提前释放。