【发布时间】:2015-08-05 16:52:36
【问题描述】:
看看下面的Reset 函数。我知道为this 调用构造函数和析构函数可能很危险,但是当如下使用时我真的找不到问题所在。我在这里问这个是因为我在 Google 上找不到任何相关材料。我所能找到的只是不要在另一个构造函数中调用构造函数,我显然同意这一点。但是在成员函数的析构函数之后立即调用构造函数不安全吗?
template<typename T>
class Array{
private:
T* m_p;
Array(const Array&);
Array& operator=(const Array&);
public:
Array(){
m_p=0;
}
Array(int length):
m_p(new T[length]){}
~Array(){
delete[] m_p;
}
void Reset(int length){
this->~Array();
new(this) Array(length);
}
};
【问题讨论】:
标签: c++ constructor destructor placement-new