使用cpp模板创建矢量

时间:2015-04-25 07:43:17

标签: c++ templates

这是教科书中的示例。我们正在使用模板创建矢量。在main函数中,我们将预定义的数组复制到向量中。最后,我们将两个向量相乘。虽然程序很好地编译,但程序无法执行。代码有什么问题。

Audit

1 个答案:

答案 0 :(得分:0)

首先在这个构造函数中

   vector(T *a)
  {
      for(int i=0;i<size;i++){
         v[i]= a[i];
     }
  }

你没有分配v指向的数组。指针v没有被初始化。因此构造函数具有未定义的行为。

另一个潜在的问题是您没有定义复制赋值运算符。

在这些陈述中

v1 = x; v2 = y;

创建了vector类型的临时对象,在分配后将删除它们。因此,新创建的对象将具有无效指针v。

您必须至少定义复制构造函数,复制赋值运算符和析构函数。