#include<iostream>
using namespace std;
class Vector
{
public:
Vector();
Vector(const Vector& v);//拷贝构造函数
void clone(const Vector& v);
~Vector();//析构函数。
void printV()
{
cout<<"size="<<size<<" rep"<<endl;
}
void setSize(int s);
public:
int size;
int *rep;
};
Vector::Vector()
{
size = 0;
rep = new int[50];
}
Vector::Vector(const Vector& v) //这里一定要用引用传递,如果用值传递,那么传递进来的时候系统也是调用拷贝构造函数进行拷贝然后再赋值给参数,
//那么就编程无限循环的调用了。ps:引用相当于一个别名;值传递是调用拷贝构造函数复制一个临时变量再赋值给参数。
{
clone(v);//调用clone进行深度拷贝。
}
Vector::~Vector()
{
if(rep != NULL)
{
delete [] rep;
rep=NULL;
cout<<"delete is invoke!"<<endl;
}
}
void Vector::clone(const Vector& v)
{
this->size = v.size;
rep = new int[size];
for(int i=0;i<size;i++)
{
this->rep[i] = v.rep[i];
}
}
void Vector::setSize(int s)
{
size = s;
}
int main()
{
Vector c;
c.setSize(10);
//c.printV();
Vector d(c);//利用拷贝构造函数拷贝对象。
d.printV();
return 0;
}
10-07