我有作业要做,但我没有非常熟悉类模板。类模板的问题
的任务是:
有一个在下面的类执行的主要问题。你能发现它吗?你怎么能修复 的问题?您可以提出多个解决方案,具体取决于该类别的要求规格 。
template <class T>
class Array
{
private:
T *m_pData;
unsigned int m_nSize;
public:
Array(unsigned int nSize) : m_nSize(nSize)
{
if(m_nSize > 0)
m_pData = new T[m_nSize];
}
virtual ~Array()
{
if(m_pData != NULL)
delete m_pData;
}
bool Set(unsigned int nPos, const T& Value)
{
if(nPos < m_nSize)
{
m_pData[nPos] = Value;
return true;
}
else
return false;
}
T Get(unsigned int nPos)
{
if(nPos < m_nSize)
return m_pData[nPos];
else
return T();
}
};
至于我而言是有内存泄漏。你发现一些其他问题吗?提示比确切的答案更受欢迎;)
没有内存泄漏(因为内存是由析构函数释放的),但你正在考虑沿着正确的线。顺便说一下,至少有三个主要问题。 –