拷贝构造函数:

当用一个vector对象初始化另外一个vector对象的时候,应拷贝所有的向量元素并且保证这一拷贝操作确实被调用了。

某一个类型的对象的初始化是由该类型的构造函数实现的。素以实现拷贝操作,我们需要实现一种特定类型的构造函数。这种类型的构造函数成为拷贝构造函数。C++定义拷贝构造函数的参数应该为一个队被拷贝对象的引用。因此对于类型vector而言,他的拷贝构造函数为如下形式vectorvector&);

这个构造函数将在我们试图使用一个vector对象初始化另一个vector对象时被调用。拷贝构造函数使用对象引用作为参数的原因在于我们不希望在传递参数时又发生参数的拷贝,而使用const引用的原因在于我们不希望函数对参数进行修改,因此我们按如下形式重新定义vector类型:

Class vector {

Int sz;

Double* elem;

Void copy(const vector & arg)l

Public:

Vector(const vector&);

 

}

Void Vector::copy(const vector& arg)

{

For(int i=0;i<arg.sz;++i)elem[i]=arg.elem[i];

}

Vector::vector(const vector& arg):sz(arg.sz),elem(new double[arg.sz]){

            Copy(arg);

       }