首页 >后端开发 >C++ >如何在 C 中使用构造函数初始化对象数组?

如何在 C 中使用构造函数初始化对象数组?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-09 05:23:02797浏览

How to Initialize Arrays of Objects with Constructors in C  ?

C:数组的构造函数初始化器

在 C 中,初始化对象数组可能是一个挑战。对于非数组场景,可以使用构造函数语法,如下所示:

struct Foo {
    Foo(int x) { /* ... */ }
};

struct Bar {
    Foo foo;

    Bar() : foo(4) {}
};

但是,在处理数组时会出现问题:

struct Foo {
    Foo(int x) { /* ... */ }
};

struct Baz {
    Foo foo[3];

    // Incorrect syntax
    Baz() : foo[0](4), foo[1](5), foo[2](6) {}
};

不幸的是,在 C 中(更早之前)该语言的最新迭代),没有直接的方法来使用构造函数初始化数组成员。该限制源于数组成员默认构造函数的要求,这些默认构造函数在数组初始化期间自动调用。之后,构造函数中的任何其他初始化都会继续进行。对于缺乏 STL 功能的嵌入式系统,一种解决方法涉及默认构造函数以及可在构造后调用的显式 init() 方法,从而无需初始化程序。

以上是如何在 C 中使用构造函数初始化对象数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn