gpt4 book ai didi

c++ - 使用重载构造函数赋值

转载 作者:行者123 更新时间:2023-11-28 02:59:01 24 4
gpt4 key购买 nike

<分区>

我创建了一个使用动态数组存储数据的自定义 vector 类。重载的构造函数将指向现有数组的指针和数组的大小作为参数。

int a[3] = { 1, 2, 3 };
Vector<int> v(a, 3);

但是,当我尝试使用以下代码更改此 vector 时,它崩溃了,因为 vector 对象“v”的指针指向动态数组地址的 0xcccccccc

v = Vector<int>(a, 3);

为什么会发生这种情况,我该如何改进上面的作业?

编辑:这是调用代码:

 template <class T> class Vector
{
private:
T* mArray;
int Length;
public:

Vector(){
mArray = 0;
Length = 0;
};

Vector(const Vector& rVectorData){
Length = rVectorData.Length;
T* pArray = new T[Length];
for (int i = 0; i < Length; i++)
pArray[i] = rVectorData.mArray[i];
delete[] Array;
mArray = pArray;
};

Vector(const T* aArray, int size){
Length = size;
T* pArray = new T[Length];
for (int i = 0; i < Length; i++)
pArray[i] = aArray[i];
delete[] mArray;
mArray = pArray;
};

~Vector(){
delete[] mArray;
mArray = 0;
Length = 0;
};
}

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com