抽取构造函数怎么做啊

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

...全文
105 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

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

墨梅无痕 2022-05-21
  • 打赏
  • 举报
回复

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

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧