【发布时间】:2016-10-07 21:36:31
【问题描述】:
我有一个问题。 考虑这个模板类
template<class T>
class nodo{
public:
T data;
};
假设我没有重新定义析构函数。如果我们假设 T=int,标准析构函数会释放数据。但是如果 T=int* 会发生什么?只是指针将被释放还是对象也被指向?理论上只是指针。
如何解除分配指向的对象? 最后,如何编写模板类的析构函数,该类的模板参数可能是指针(以及显式释放)?
【问题讨论】:
-
简单修复,将
T改为unique_ptr<int>。然后指向的对象会自动销毁 -
这和你做的没什么不同
class nodo { public: int* data;}。 -
@vu1p3n0x ,即使数据不是指针,unique_ptr 也能工作?
标签: c++ templates pointers destructor