【问题标题】:What does this code do? (c++, classes and arrays)这段代码有什么作用? (C++,类和数组)
【发布时间】:2016-12-06 19:05:36
【问题描述】:
IntArray::IntArray (int *array, int sz)
{
_size = sz;
int  ia = new int[_size];
for (int ix=0; ix<_size; ++ix)
ia[ix] = array[ix];
}

您好,我目前正在学习由 Stanley Lipmann 为初学者编写的 C++,并且我正在通过类帮助创建抽象数组。有人可以解释一下这段代码的作用吗?根据我的猜测,它将“sz”值(来自类外)分配给“_size”,然后我们创建“ia”动态数组,毕竟它将“array”指针(类外)的值分配给“ia “ 大批。谢谢:D

【问题讨论】:

  • 是的,你的理解是正确的。我建议不要使用 int 作为数组大小的类型。
  • 它只是泄漏内存
  • @t.m.,不,只要代码不会泄漏任何内存。
  • @t.m.除非他在析构函数中使用delete[] ia(或使用向量)。
  • 克隆一个数组?

标签: c++ arrays class


【解决方案1】:

那不可能是完整的代码,_size 是在哪里定义的?是班级成员吗?前面的下划线表明了这一点。我假设ia 也是int * 类型的类成员。

它所做的是将sz 的值复制到(可能)成员变量_size 中。然后它分配一个新数组int。然后for 循环将给定数组中的元素复制到分配的新内存中。查看名称它会告诉您这是一个构造函数。它通过复制给定的数组来构造一个新的ints 数组。

顺便说一句,缩进你的代码,这样它更容易阅读,这将更容易理解!

IntArray::IntArray(int *array, int sz) {
    _size = sz;
    ia = new int[_size];
    for (int ix = 0; ix < _size; ++ix)
        ia[ix] = array[ix];
}

您可以使用惊人的clang-format 来满足您的所有格式化需求。

您可以在arraysz 参数中添加const,这样您还可以从常量数组​​创建新的IntArray 实例。

【讨论】:

  • 是的,我知道我显示的代码不完整,但我得到了我需要的答案。谢谢!)
  • @FishTheBig 您应该考虑到 StackOverflow 不是为了获得您个人需要的答案,而是提供简明的答案(针对简明的问题!),以帮助任何未来的研究 在这里。抱歉,到目前为止我还没有看到这个值。
猜你喜欢
  • 2011-04-13
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
  • 2010-11-07
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
相关资源
最近更新 更多