有抖音总共20秒的视频分成三段内味了。
好的,书接上文,如果传入的T data,本身是个临时对象,或者智能指针等等,有可能传过来不久就病逝了,那么咱们的void *指针就有问题了。
也没想到好的思路,暂时的唯一的解法就是拷贝一份数据data_copy,然后咱们咱们管理这个data_copy就可以了,data要死要活和咱噎没关系了,为了方便管理,同时把普通指针升级到智能指针。
那么怎么拷贝任意类型的数据呢?
在这里分三种情况,也可以看作是两种。对于普通变量,或者是对象,直接data_copy=data;赋值即可;对于指针,如果 data_copy=data ;实际上是将data_copy指向里data指向的区域,如果data指向的区域回收了,data_copy将因为非法访问而被拘留。其实对于指针,将其指向的数据进行赋值就可以了:
*data_copy = *data;
对于智能指针,也是类似的道理。
那么怎么判断一个变量,是不是指针呢?
还是用到了模板类的可变参数:
template<class T>
void copy(shared_ptr<T> v){
cout<<"is a zhineng point"<<endl;
}
template<class T>
void copy(T* v){
cout<<"is point"<<endl;
}
template<class T>
void c