【发布时间】:2017-04-14 12:48:03
【问题描述】:
如果我有这样的课程:
template <class T>
class Array {
private:
T *m_pData;
unsigned int m_nSize;
public:
Array(unsigned int nSize) : m_nSize(nSize),m_pData(nullptr) {
if(m_nSize > 0)
m_pData = new T[m_nSize];
}
~Array() {
if(m_pData != NULL) {
delete [] m_pData;
}
};
如果现在我像这样创建我的类的对象:
Array<int> miArray(5);
析构函数的实现应该没问题,但是如果我创建这样的对象:
Array<int*> miArray(5);
在析构函数中,我应该删除存储在数组中的每个对象以避免内存泄漏。
我怎样才能做到这一点?
谢谢
【问题讨论】:
-
如果你想为数组中的每个指针分配内存,我猜你也必须更改构造函数。你必须专攻你的课程。
-
使用智能指针
标签: c++ class templates destructor delete-operator