问题标签 [initialization-list]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
262 浏览

c++ - 初始化列表与静态常量初始化

创建 100 多个新对象时更快的是什么:

或者:

TonsOfVars 意味着多个不同的变量(从 POD 到结构/类)

我会假设静态常量,因为它调用复制构造函数(意味着 1 个操作?)与调用初始化列表中的每个初始化器?
尽管对此的普遍反应是“分析它”,但即使这样做也无法解释为什么它更快。

0 投票
2 回答
727 浏览

c++ - C++初始化列表忽略调用父类构造函数

在接下来的代码中,构建一个 C 类首先初始化 A,然后是 B1,然后是 B2,最后是 C 类。但是,在初始化 B1 和 B2 时,调试器忽略了 A(1) 和 A(2) 的初始化(按此顺序出现在 B1 和 B2 的初始化列表中),但没有忽略 B2(3) 的初始化在 C 初始化列表中。

这是为什么?

提前致谢。

这是代码:

0 投票
2 回答
421 浏览

c - How to initialize a structure on definition?

Is there a way to declare a structure with default initalisation values?

I have a header file which defines a structur like this:

But this ofcourse doesn't work.

I would also be fine with a way of declaring a var of type struc_t in this header file. But as I remember right. I would have to decalre it in the c file as extern

What I want to do is every where where this header is included i want to be able to do var = struc_s.dmg and and the result should be that var holds the value 100. But I dont want to declare struc_s anywhere else then in the header. Is there a way to archive this behavior?

0 投票
2 回答
1144 浏览

c++ - C++ 数组初始化的 Doxygen 问题

我正在使用 Doxygen 为我当前的项目生成一个 API,并且发生了一些奇怪的行为。基本上,如果我使用初始化列表在类的构造函数中设置成员数组,Doxygen 不会产生正确的输出。

这是一个简单的测试类:

如果我在构造函数版本 1 的文件上运行 doxygen,我会得到一个相对空的 HTML 文件,该类没有构造函数文档,也没有提及我的变量 v。如果我注释掉版本 1 并使用版本 2,Doxygen 会正确生成类的文档。

我知道这种类型的数组设置对于 C++11 来说是新的,但它是初始化还是它在初始化列表中完成的事实?如果有人知道导致这种行为的原因,我将不胜感激,因为我们在整个代码中都使用了这些类型的初始化程序,并且我希望在必要时避免进行彻底的更改。

0 投票
3 回答
390 浏览

c++ - 类成员中的初始化顺序是什么?

我刚刚读到这个答案,如果你有以下代码

对于第一类,初始化 One.test 将在调用 Base::Base 之前初始化。但是 Two.test 将在 Base::Base 被调用后被初始化。

我认为这是因为在这两种情况下

  1. 字段 <- 这包括 One.test
  2. 基数::基数()
  3. One::One() 或 Two::Two() <- 初始化 Two.test

我想我记得初始化列表就在构造函数之前。那么初始化顺序也是:

  1. 字段
  2. 基本初始化列表
  3. 基础构造函数
  4. 自己的初始化列表
  5. 自己的构造函数

而Base的领域又是从哪里来的呢?是在分配内存时首先初始化所有字段还是在当前基类的初始化列表之前初始化所有字段?

您还能想到列表中的其他步骤吗?

如果有人能给出一个很好的概述,我将不胜感激。

0 投票
1 回答
91 浏览

c++ - 类成员未初始化

我有以下代码和简单的 if 语句:if (voxels_)where voxels_ should be NULL 失败。编码:

我在 clear() 方法中遇到了段错误。使用 gdb 我得到的地址voxels_设置为0xa很奇怪。我将它初始化为NULL,所以if (voxels_)应该简单地返回false。任何想法都会有所帮助。这真让我抓狂

0 投票
1 回答
358 浏览

c++ - 此时在构造函数中调用基类的构造函数

我需要知道在派生类构造函数的调用中何时调用基类的构造函数。

使用该命令调用Derived Child;构造函数Derived,但我读过在Derived执行类构造函数之前执行所有基本构造函数,即 Base1 和 Base2 的构造函数。

所以我想知道如果类的构造函数Derived看起来像这样,事件顺序将如何

类的构造函数是Base2现在在构造函数的初始化列表中Derived调用还是之前调用。此外,所有基类构造函数都是在构造函数调用开始时Derived或类构造函数初始化列表Derived开始时调用的。

直接问候

0 投票
1 回答
467 浏览

c++ - 初始化列表中的类 constexpr 表达式

以下代码无法与 g++ 4.8.2 链接:

我收到以下错误:

如果我注释掉地图,事情链接就好了。这是一个编译器错误,还是我在标准中遗漏了一些极端情况?

0 投票
2 回答
184 浏览

c++ - C++ 构造函数初始化列表调用默认构造函数。为什么?

看看我的代码。它将 Vector4 转换为 Vector4。有这个复制构造函数,它会自动逐个组件地进行转换。我无法理解一件事:为什么在构造结束时,正确设置每个组件时,会在每个组件上调用默认构造函数,从而使输出向量为空。您可以在下面的输出中看到执行流程。有趣的是,如果我用 4 个赋值替换初始化列表,代码会按预期工作。

编译器是VS2013。

该程序的输出:

0 投票
1 回答
98 浏览

c++ - 构造函数的初始化列表

我正在学校做一项作业,我们应该为我们自己的 List 类创建一个构造函数,该构造函数将初始化列表作为参数。

这就是我希望能够做到的:

这是我到目前为止所拥有的:

在我看来,这应该很好用。但是,当我尝试初始化 ( List list {1,2,3};) 时,我得到一个段错误。有人可以解释一下我在这里做错了什么吗?