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

如何在 C 中正确初始化对象数组?

Linda Hamilton
发布: 2024-11-07 01:53:02
原创
393 人浏览过

How to Properly Initialize Arrays of Objects in C  ?

如何在 C 中初始化对象数组

在 C 中,初始化对象数组可能看起来很简单,但是有一些复杂的地方考虑。考虑以下结构和类定义:

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

struct Bar {
  Foo foo;

  Bar() : foo(4) {}  // Valid initialization
};

struct Baz {
  Foo foo[3];

  // Incorrect initialization
  Baz() : foo[0](4), foo[1](5), foo[2](6) {}
};
登录后复制

使用 foo(4) 初始化 Bar 是有效的,因为它调用 Foo 的构造函数来初始化 foo 成员。但是,尝试以提供的方式初始化 Baz 是不正确的。

正确的数组初始化

与 Bar 不同,Bar 中只有一个 Foo 类型的对象,Baz 包含三个相同类型的对象。要正确初始化 Baz 中的对象数组,必须采用以下方法:

Baz() {
  foo[0] = Foo(4);
  foo[1] = Foo(5);
  foo[2] = Foo(6);
}
登录后复制

这显式调用数组中每个对象的构造函数。

嵌入式的解决方法处理器

在没有像 std::vector 这样的标准库构造的情况下,另一种方法是使用 默认构造函数以及显式初始化方法 ,例如 init(),允许您将初始化推迟到构造之后:

Baz() {}

void Baz::init() {
  foo[0] = Foo(4);
  foo[1] = Foo(5);
  foo[2] = Foo(6);
}
登录后复制

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板