抽取构造函数怎么做啊

sasasasasamu 2022-05-20 22:47:09

下面程序中定义了一个整型动态数组,编写了 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 的三个构造函数都是以相似的方式来实现的。一般 来说,当两个或多个函数重复相同的代码时,可将这部分代码抽取出来,形成独 立的函数,以便共享。以后如果需要改变这些实现,则只需改变一次,而且这种 实现的共享本质更容易为大家所理解。怎样把构造函数中的代码抽取出来形成独 立的共享函数呢?请给出一种可能的实现。按你给出的实现方法修改程序并重新 编译运行。

...全文
41 2 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复

确实,这么简单几行代码你抽取啥呢,不要过度设计,名言曰:代码不是老二,越长越好~

  • 打赏
  • 举报
回复

我看不出这三个构造函数有什么值得抽取的共用代码。
另外,对于第二个构造函数,你应当增加对 array的大小 和 sz 进行比较判定,以防止 sz 大于 array.Length 造成其数组越界问题。

  • 打赏
  • 举报
回复
相关推荐
发帖
C++ 语言
加入

6.2w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
申请成为版主
帖子事件
编辑了帖子
2022-05-20 22:47
创建了帖子 (查看)
2022-05-20 22:47
社区公告
暂无公告