【问题标题】:Will C++ default-initialization set array elements to its default value?C++ 默认初始化会将数组元素设置为其默认值吗?
【发布时间】:2017-02-21 02:23:44
【问题描述】:

考虑以下代码:

#include <iostream>

using namespace std;

int main(){
  int* p = new int[2];
  for (int i = 0; i < 2; i++)
    cout << p[i] << endl;  
  return 0;
}

我运行了几次。它总是产生以下输出:

0
0

我可以假设 C++ 默认初始化将数组元素设置为其默认值吗?在这种情况下,我可以假设 p 的元素值总是设置为 0 吗?

我已阅读以下相关问题。但他们并没有具体解决我的情况:

【问题讨论】:

    标签: c++ arrays initialization new-operator


    【解决方案1】:

    我可以假设 C++ 默认初始化将数组元素设置为其默认值吗?

    不,default initialization

    • 如果 T 是数组类型,则数组的每个元素都是默认初始化的;

    元素类型为int,则

    • 否则,什么都不做:具有自动存储持续时间的对象(及其子对象)被初始化为不确定 价值观。

    另一方面,list initialization(C++11 起) 像 int* p = new int[2]{};int* p = new int[2]{0};value initializationint* p = new int[2](); 将保证,对于 int,所有元素都为零-初始化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-08
      • 2020-06-21
      • 1970-01-01
      • 2014-11-30
      • 1970-01-01
      • 2017-11-21
      • 2013-01-17
      相关资源
      最近更新 更多