template<typename T> class shared_ptr { T *_ptr; std::size_t *count; .... public: shared_ptr(T *t=new T):_ptr(t),count(new std::size_t(1){} .... ~shared_ptr() { if(--*count==0) { //假如本人用的是shared_ptr<vector<string>> str,那么怎么delete _ptr就出错了,这里要怎样才能兼容? delete _ptr; delete count; } } }
解决方案:5分
内部默认就是普通的delete释放,但可以根据你用的类型封装对应的自定义deletor函数给它。
而vector可以new和delete啊,不知你怎么用的
而vector可以new和delete啊,不知你怎么用的
解决方案:5分
没看明白。什么原版,莫非你本人写了个shared_ptr?那到底是原版的shared_ptr崩了 还是你写的崩了
解决方案:10分
莫非是重新造了一个shared_ptr<>的轮子,没用标准库里的?
解决方案:20分
为什么不参考标准库源代码呢?