C++代理类设计(一)(二)

2014-11-24 13:28:50 · 作者: · 浏览: 98
Surrogate& v) { if(this!=&v)//对赋值操作符进行检测,确保没有将代理赋值给它自身 { delete vp; vp=(v.vp v.vp->copy():0);//非零的检测是必要的,空代理 } return *this; }

下面就很容易定义我们的数组了:

VehicleSurrogate parking_lot[1000];

Automobile x;

parking_lot[num_vehicles++] = x;

最后一条语句就等价于

parking_lot[num_vehicles++] = VehicleSurrogate(x);

这个语句创建了一个关于对象x的副本,并将VehicleSurrogate对象绑定到该副本,然后将这个对象赋值给parking_lot的一个元素。当最后销毁parking_lot数组时,所有这些副本也将被清除。