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分
为什么不参考标准库源代码呢?