【发布时间】:2010-11-29 22:14:59
【问题描述】:
我的编程课上有一个作业,非常措辞很糟糕......下面这行真的难倒我。我们正在创建一个名为 FloatArray 的类,其中包含一个数组(arr,它只是指向一堆floats 的指针)。
默认构造函数 FloatArray();应该创建零宽度和零高度的数组。
我不知道我的教授是什么意思……还有其他人吗?我们需要提供另一个构造函数,它指示数组的高度和宽度。这很好,花花公子 - 只需插入数字,然后分配......但他所说的“创建零宽度和零高度的数组”是什么意思?
如你所知,数组简单地定义为:
float *arr;
帮助我理解这种疯狂!如果由我决定,我什至不会为这样的类创建一个空白的构造函数......
无论如何 - 我在这里忽略了什么吗?这是我以前从未遇到过的某种术语,还是我说这是疯狂的说法是正确的?
我应该只在默认构造函数中执行以下操作吗?
*arr = 0;
因为我不能arr = new float[0],现在我可以:P(或者我可以 - 我刚刚尝试过(感谢 Thomas!)它编译并运行......!? )
这是否意味着当我执行arr = new float[0] 时,arr 指向堆上的某个位置(开始?)?
我知道这个问题似乎很模糊,但这就是整个作业的方式 - 措辞非常糟糕。我只是想确定不只是我!
【问题讨论】:
-
"因为我不能做 arr = new float[0],现在我可以:P" 实际上,我认为你可以,我认为这正是你的教授的意思。
-
...哎呀。我假设内存分配类似于数组(因为你不能声明一个零大小的数组)。声明类似的东西会导致分配 arr 什么?
-
arr被分配了一个零长度float数组的地址。并不是说您可以在其中存储任何东西,但如果需要,您可以安全地delete它。 (同样,您也可以使用0指针来执行此操作。) -
把这个作为答案,托马斯。你会得到布朗尼积分!!!
标签: c++ arrays class constructor