今天本来是想封装一个MutationObsever的类,发现好多关于指针的使用,每次看过之后都会忘,记忆力差,决定今天就边看边记录一下 吧。
1. nullptr
就是封装了一个空指针,这个没什么可说的,哎,语言表达能力弱.......
2. RawPtr
RawPtr, 封装了一个指针,T* m_ptr; 以及一些列的接口比如get, clear, release 等,
RawPtr不负责指针的释放,仅仅是封装了指针而已。
3. PassRefPtr
PassRefPtr, 顾名思义“传递指针”,例如
PassRefPtr passPtr(anotherPassPtr);
执行后,anotherPassPtr的m_ptr变为空;
另外,PassRefPtr的m_ptr, 必须有成员函数ref()以及deref()。
4. RefCountedPtr
顾名思义,计数指针,每增加一个引用则计数加1,反之则减1,当计数为0时,则释放指针。
5. OwnPtr
这个对象仅仅由他自己管理,别人复制给他后,别人就被赋值NULL,他比较适合不是从RefCounted继承下来的对象。