问题标签 [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 投票
1 回答
384 浏览

c++ - 构造函数委托中的 C++ 调用函数

在 c++11 中,构造函数可以转发到初始化列表中的另一个构造函数。

可以像这个问题一样在初始化列表中调用函数

在构造函数委托中调用函数也可以吗?

我试过这样的代码:

对于上面的代码,只需传递一个空文件给它,它只会在b的初始化过程中打印一个“Got”。

==================================================== ======================

用 argv[1] 替换 string(argv[1]) 使它工作,任何想法为什么?

0 投票
2 回答
6235 浏览

c++ - 错误 C3074:数组只能用初始化列表初始化

我正在为 POD、STL 和像数组这样的复合类型开发小型(漂亮)打印机。在这样做的同时,我也在摆弄初始化列表并遇到以下声明

似乎 VC2013 和 G++ 4.8 都不太满意,并发出一致的错误消息,在这两种情况下对我都不是很有帮助

对于 VC++: error C3074: an array can only be initialized with an initialize-list

对于 G++ 4.8: error: array must be initialized with a brace-enclosed initialize

所以要么初始化列表不能在这里使用,要么我的语法完全不正确?

在类似的方面,以下语法似乎是有效的

我的初始化列表可能有什么问题?

  • 注意我知道我应该使用std::array而不是 C 类型的数组,但我只是在试验。
  • 注意如果你不想玩这个,这里有一个IDEONE版本
  • 注意另外,如果您可以将我推荐回标准,那将是非常有益的。
0 投票
1 回答
401 浏览

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

我正在尝试使用另一个名为“List”的类的构造函数中的初始化列表来初始化一个名为“Winery”的类的实例。问题是,当我将 Winery 构造函数交给要复制的酒厂时,它无法复制信息。

这是 Winery 类的头文件:

这是我的 List 类的头文件的相关部分:

这是我的 List 类中的构造函数:

从我所见,看起来我正在做我需要做的一切。我传递给构造函数的酒厂数据成员是私有的,所以我试图通过获取信息的函数来获取它们。他们的顺序和一切都是正确的。初始化它们后指针工作得很好,但信息不存在,所以我真的不知道该怎么做。如果您想知道,这是一个分配,我们必须使用初始化列表(我已经尝试过没有它们,但它也不起作用,所以我真的不知道该怎么做)。我将不胜感激任何帮助!谢谢!

编辑:这是我的酒厂构造函数:

0 投票
1 回答
897 浏览

c++ - 如何在构造函数初始化列表中进行深层复制。C++

这是列表类中节点的构造函数。我需要制作一个酒厂的深层副本,这是初始化列表中的另一个类。项目是酒厂的一个实例。

酿酒厂的构造函数:

0 投票
1 回答
119 浏览

c++ - C ++:对初始化列表中的单个类成员使用两个逗号分隔的值

有一些 C++ 代码。我想知道为什么初始化列表(:OTMixerMgr(OTMediaType_Audio, oBridgeInfo))中的单个类成员可以使用两个值?因为通常只有一个值用于单个类成员,例如
ClassName::ClassName(): fisrtMember(firstValue) {...}.

此代码取自 Telepresence 项目,https://code.google.com/p/telepresence/source/browse/trunk/source/OTMixerMgrAudio.cc? r=118 ,第 31 行

谢谢!

0 投票
2 回答
185 浏览

c++ - 使用 operator new 分配内存并使用数据进行初始化

在我的项目中,有 100 万个输入,我应该将搜索/排序算法与不同数量的输入进行比较,直到达到 100 万个输入。我想用数据一起进行内存分配和初始化,但我意识到这是不可能的。所以我决定这样做;

但是有一个巨大的数字溢出,例如N = 500000。那么,有没有将这两者结合起来的方法?(没有溢出和数据初始化)

其次,这两个代码之间有什么区别;

p>

0 投票
3 回答
19311 浏览

c++ - 初始化列表中的零初始化数组成员

我有一个带有数组成员的类,我想将其初始化为全零。

对于局部变量,有一种简单的零初始化方法(参见此处):

此外,m_array显然需要初始化类成员,因为默认初始化 int 只会留下随机垃圾,如此所述。

但是,我可以看到对成员数组执行此操作的两种方法:

带括号:

带大括号:

两者都正确吗?两者在 C++11 中有什么区别吗?

0 投票
4 回答
7257 浏览

c++ - 初始化 const 成员变量

我有 C++ 代码,可以归结为以下内容:

从语义上讲,bar 和 baz 成员变量应该是 const,因为它们在初始化后不应该改变。但是,似乎为了使它们如此,我需要在初始化列表中初始化它们而不是分配它们。说清楚,我明白为什么我需要这样做。问题是,如果不做以下不受欢迎的事情之一,我似乎找不到任何方法将代码转换为初始化列表:

  • 调用complex_method两次(对性能不利)
  • 添加指向 Foo 类的指针(会使类大小不必要地变大)

有什么方法可以使变量 const 同时避免这些不良情况?

0 投票
1 回答
83 浏览

c++ - 是否可以通过初始化列表初始化引用类型?

首先,如果这是一个糟糕的问题,我深表歉意。我是 C++ 新手。

我有一组包含引用类型字段的类头,它是一个接口(由纯虚函数构建的类)。我想初始化我的类,以便默认情况下将引用类型字段设置为某个“具体”派生类,这是使用默认构造函数(无参数!)完成的。我还希望能够用另一个“具体”派生类覆盖这个初始化。

到目前为止,我的类标题如下:

但我正在努力实现:

更新 我们发现使用这种潜在的设计不会很有效。对于具有该字段的每个类,默认值const IBar & bar几乎总是相同的对象,但单元测试除外——我们希望能够根据需要交换模拟类。

我不想不断地在堆栈上创建相同的对象,因此将为这些对象组创建一个工厂。

我已经沿着单个构造函数的路线如下:

如果有人想提供有关将类引用字段设置为初始化列表中的临时对象的适当答案(即只能对 const 字段执行此操作,并且将超出构造函数的范围),我会将其标记为接受的答案。或者将其标记为适当的副本。

0 投票
3 回答
694 浏览

c++ - 在构造函数的初始化列表中使用“this”对 Qt 来说特别危险吗?

我需要关于“这个”主题的可靠信息:

当然,在构造函数 OR 初始化列表中调用虚函数是个坏主意。问题是:这个代码可以吗

导致未定义的行为?!如果是这样:为什么?

如果可以的话,请引用您的来源!谢谢!