如何为默认构造函数分配数组?

Ari*_*ari 1 c++

我对 C++ 非常陌生,并且在创建课程时遇到问题。

所以我有这个 pad 类,它具有doublepad 侧面的 x 和 y 坐标的输入。详细来说,假设你有一个 2cmx2cm 的垫子,它会有pad({0.0,2.0},{0.0,2.0})。我想将默认构造函数设置为 0x0 的 pad。

class pad {
   public:
    double xcor[2] = {0, 0};
    double ycor[2] = {0, 0};
    double charge = 0;
    pad() = default;  // put this for now to work on code that works with the
                      // pad object

    pad(double xcord[], double ycord[]) {
        for (int i = 0; i < 2; i++) {
            xcor[i] = xcord[i];
            ycor[i] = ycord[i];
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

woh*_*tad 5

您在以下行中做了什么:

double xcor[2]={0,0};
Run Code Online (Sandbox Code Playgroud)

称为默认成员初始值设定项。

正如您在链接中看到的,它在运行构造函数的主体之前设置数据成员的值。在您的情况下,它将在调用默认构造函数之前初始化等xcorycor而默认构造函数不会修改它们。您将得到您想要的值。

旁注:

  1. 如果您使用成员初始值设定项列表,它优先于默认成员初始值设定项:

如果非静态数据成员具有默认成员初始值设定项并且也出现在成员初始值设定项列表中,则使用该成员初始值设定项并忽略默认成员初始值设定项

  1. 我同意上面评论中的建议,使用std::array而不是 C 样式数组。