c++ - 如何在 C++ 中使用构造函数(只是构造函数)初始化类中的大型私有(private)数组?

标签 c++ arrays constructor

<分区>

假设我们有一个像下面这样的类:

class myprogram {
public:
myprogram ();
private:
double aa,bb,cc;};
myprogram::myprogram():aa(0.0),bb(0.0),cc(0.0){}

如您所见,我们可以使用 myprogram() 构造函数初始化私有(private)成员的 aa、bb、cc。

现在,假设我有一个很大的私有(private)数组 G_[2000]。我如何使用构造函数将此数组的所有值初始化为 0。

class myprogram {
public:
myprogram ();
private:
double aa,bb,cc;
double G_[2000];};
myprogram::myprogram():aa(0.0),bb(0.0),cc(0.0){}

最佳答案

在构造函数体中使用 std::memset 函数。

例如,

myprogram::myprogram()
     : aa{0.0}, bb{0.0}, cc{0.0}
{
    std::memset(G_, 0, 2000 * sizeof(double));
}

但是,如果您在初始化列表中使用大括号 {},它将设置默认初始化对象(如果是数组,它将用零填充)。

关于c++ - 如何在 C++ 中使用构造函数(只是构造函数)初始化类中的大型私有(private)数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59729491/

上一篇:c# - 使用 CLR .Net Core 库(C++/CLI) 的 Web .Net Core 3.1 项目中的 BadImageFormat

下一篇:c++ - 我们可以在C++的递归函数中定义任何 vector 吗?

相关文章:

C++。我如何在 VS 2015 中设置文件之间的链接

c++ - 分析.WAV文件

c++ - "smart pointer to member"的真实示例是什么?

javascript - 使用 JS 迭代数组并对所有值求和

java - 为什么我的 int[] 数组循环越界?

Dart Set.from()与Set.of()

c++ - 段错误,并传入指针

c++ - 将数组的次对角线上的元素相乘。宝兰C

c++ - 删除复制构造函数会破坏继承的构造函数

c# - 在构造函数中初始化一个虚拟属性是错误的吗?