我刚开始接触 C++,我想养成一些好习惯。如果我刚刚使用 new
运算符分配了一个类型为 int
的数组,如何在不自己循环遍历它们的情况下将它们全部初始化为 0?我应该只使用 memset
吗?有没有“C++”的方式来做到这一点?
最佳答案
这是一个令人惊讶的 C++ 鲜为人知的特性(这一点可以从没有人给出这个答案的事实中得到证明),但它实际上具有用于对数组进行值初始化的特殊语法:
new int[10]();
请注意,您必须使用空括号——例如,您不能使用 (0)
或其他任何东西(这就是为什么这只对值初始化有用)。
这是 ISO C++03 5.3.4[expr.new]/15 明确允许的,它说:
A new-expression that creates an object of type
T
initializes that object as follows:...
- If the new-initializer is of the form
()
, the item is value-initialized (8.5);
并且不限制允许这样做的类型,而 (expression-list)
形式受到同一节中进一步规则的明确限制,因此它不允许数组类型。
关于c++ - 如何在 C++ 中使用 new 运算符初始化内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2204176/