这是教科书中的示例。我们正在使用模板创建矢量。在main函数中,我们将预定义的数组复制到向量中。最后,我们将两个向量相乘。虽然程序很好地编译,但程序无法执行。代码有什么问题。
Audit
答案 0 :(得分:0)
首先在这个构造函数中
vector(T *a)
{
for(int i=0;i<size;i++){
v[i]= a[i];
}
}
你没有分配v指向的数组。指针v没有被初始化。因此构造函数具有未定义的行为。
另一个潜在的问题是您没有定义复制赋值运算符。
在这些陈述中
v1 = x; v2 = y;
创建了vector类型的临时对象,在分配后将删除它们。因此,新创建的对象将具有无效指针v。
您必须至少定义复制构造函数,复制赋值运算符和析构函数。