2010年3月31日星期三

smart pointer 随想

我开始觉得无论是auto_ptr 以及 Reference Counting 其实都是保证只有一个pointer指向pointee/object, 这个object只有一个pointer拥有它的owership. 在auto_ptr中就很明显了, 而在RC中它封装好了这个唯一的pointer, 并通过override那些opertor* ->来让外界使用. 所以不要出现T *pointer = new T这定义, 而是该用Reference ref = new T;
另外, Reference ref本身是作为一个stack上的variable, 那就当然在离开当前scope时候自动释放资源.
RC的想法是:pointer这东西危险,归我保管,但是你们可以借用。
但是并不是什么用pointer的地方都需要用RC来代理, 例如一个Tree中很多Node的pointer,就不需要用RC来代理。为什么?(你想想RC的出发点就知道了:-)

没有评论:

发表评论