下面程序中定义了一个整型动态数组,编写了 3 个构造函数。
IntArray::IntArray( int sz ) { size = sz; // 设置数据成员 ia = new int[ size ]; for ( int ix=0; ix < size; ++ix ) ia[ix] = 0; // 初始化数组元素 } IntArray:: IntArray( int *array, int sz ) { size = sz; // 设置数据成员 ia = new int[ size ]; for ( int ix=0; ix < size; ++ix ) ia[ix ] = array[ ix ]; // 拷贝数据成员 } IntArray:: IntArray( const IntArray &rhs ){ size = rhs.size; ia = new int[ size ]; for (int ix = 0; ix < size; ix++ ) ia[ ix ] = rhs.ia[ ix ]; }
(2)程序中,类 IntArray 的三个构造函数都是以相似的方式来实现的。一般 来说,当两个或多个函数重复相同的代码时,可将这部分代码抽取出来,形成独 立的函数,以便共享。以后如果需要改变这些实现,则只需改变一次,而且这种 实现的共享本质更容易为大家所理解。怎样把构造函数中的代码抽取出来形成独 立的共享函数呢?请给出一种可能的实现。按你给出的实现方法修改程序并重新 编译运行。