I ++初始化数组的C++指针

Kev*_*n J 1 c++ arrays initialization fill

我希望一个类的所有函数都可以访问一个数组.

我把数组作为私有变量放在头文件中.

    private:
    int* arrayName;
Run Code Online (Sandbox Code Playgroud)

在我实现类的.cpp文件中,构造函数接受一个int值(大小)并创建数组.目标是填补它

ClassName::ClassName(int numElements){
  arrayName = new int[numElements]; //make arrays the size of numElements
  for(int i = 0; i<numElements; i++)
      arrayName[i] = 0;
}
Run Code Online (Sandbox Code Playgroud)

我觉得这样效率很低.我知道你可以做int array [5] = {0}; 但是如果你最初不知道尺寸,你怎么做呢.

jua*_*nza 6

如果要对新建数组进行零初始化,只需对其进行值初始化即可.这具有零初始化其元素的效果:

arrayName = new int[numElements]();
//                              ^^
Run Code Online (Sandbox Code Playgroud)

但你真的想要使用std::vector<int>.

private:
  std::vector<int> vname;
Run Code Online (Sandbox Code Playgroud)

ClassName::ClassName(int numElements) : vname(numElements) {}
Run Code Online (Sandbox Code Playgroud)

这样您就不必担心删除数组并实现复制构造函数和赋值运算符.