多维数组的构造函数初始化列表

Constructor Initialization Lists for Multidimensional array

我尝试将成员数组中的所有数据初始化为0

class Array {
    int m_anArray1D[10];
    int m_anArray2D[10][10];
public:
    Array(): m_anArray1D{0}, m_anArray2D{{0}} {}
};

但代码永远不会起作用。

是否可以立即分配二维数组中的所有数据

假设您的代码有印刷错误,并且您没有提供您的编译器版本,以下代码对于所有支持 C++98 的编译器都足够了。

struct Array {
    int m_anArray1D[10];
    int m_anArray2D[10][10];
};

int main(int argc, char *argv[]) {
    Array arr = {};
    return 0;
}

好的!你可以在构造函数中使用 fill

std::fill(m_anArray2d[0]+0,m_anArray2d[9]+10,0);

或使用memset

memset(m_anArray2D, 0, sizeof(int)*10*10);

class Array {
    int m_anArray1D[10];
    int m_anArray2D[10][10];
public:
    Array(): m_anArray1D(), m_anArray2D() {}
};