是一個類的移動構造函數,該類包含一個應該刪除它的動態分配數組?比如我有:移動自定義容器的構造函數?
template<typename T>
class MyVector
{
public:
MyVector()
{
data = new T[32];
capacity = 32;
size = 0;
}
MyVector(const MyVector<T>& o) //The basic copy constructor
{
capacity = o.capacity;
size = o.size;
data = new T[capacity];
for(int i = 0; i < _size; i++)
{
data[i] = o.data[i];
}
}
MyVector(const MyVector<T>&& o) //The move constructor
{
//What goes here?
}
private:
T* data;
unsigned int size;
unsigned int capacity;
};
我明白,當我做類似的舉動調用構造函數:
MyVector A; A = MyVector(); //右邊的那個得到一個叫做移動構造函數? 所以它應該是相同的複製構造函數?
這可能只是一個拋棄練習,但是你的'Vector'不適用於沒有默認構造函數的類型。真正的矢量不會創建32個新的「T」;它們爲32'T'分配足夠的內存,然後通過placement-new將需要的對象存儲到需要的對象中。 – fredoverflow