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

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

Susan Sarandon
Susan Sarandon原创
2024-11-06 19:08:02933浏览

How can you initialize an array of objects within a C   constructor?

C 数组构造函数初始化

在 C 中初始化对象数组可能具有挑战性,特别是与非数组示例相比。考虑以下非数组初始化:

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

struct Bar {
     Foo foo;

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

在此示例中,Bar 结构中的 Foo 对象使用构造函数中的初始值设定项列表进行了正确初始化。但是,初始化对象数组需要不同的方法。

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

struct Baz { 
     Foo foo[3];

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

上面示例中显示的错误语法凸显了单独初始化数组元素的挑战。

解决方案

不幸的是,根据提供的答案,没有标准方法可以在构造函数中初始化 C 中的对象数组。相反,必须对数组成员使用默认构造函数,并且可以在构造时间后执行任何必要的初始化。

此限制归因于所使用的嵌入式处理器的限制,该处理器缺乏对现代 C 的支持标准。作为解决方法,作者建议创建一个默认构造函数和一个显式 init() 方法来在构造后执行初始化。虽然这种方法可能并不理想,但它克服了数组缺乏构造函数初始值设定项的问题。

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

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