问题标签 [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 回答
126 浏览

c++ - 初始化列表需要哪些效果的初始化函数调用?

我有一个带有 const 字段成员的基本 Image 类:

这意味着在构造函数中,我必须像这样初始化初始化列表中的宽度和高度:

现在我打算对其进行子类化,以便我可以通过向子类提供文件路径来加载图像(因此调用代码不必担心加载图像)。此类看起来类似于以下内容:

但是,我们可以在这里看到 - 在我们获得宽度/高度之前必须加载图像 - 子类中的某些字段也需要在初始化列表中初始化

如何设置子类的构造函数,以便可以初始化所有这些字段?

不可能在子类中引入另一个对象来捕获所有字段数据,将其作为初始化列表中的第一个对象加载,并重新提取所有其他字段的值,因为基类需要宽度/高度(如果图像加载逻辑在派生类中,则不可用)。

是删除 const 修饰符并初始化构造函数中的字段的唯一方法吗?

0 投票
2 回答
1414 浏览

c++ - 在默认构造函数中显式设置初始化列表有优点还是缺点?

为您的 C++ 对象构造函数显式地拥有一个完整的初始化列表有什么优点或缺点吗?(即使我们只是使用默认构造函数,您也列出了所有成员?)

例如,如果我有对象:

让我的构造函数成为:

而不是只列出我特别需要设置数据的对象(或调用非默认构造函数):

如果该类只有使用默认构造函数的对象,我是否应该设置一个初始化列表?

例如:

有这样的构造函数有什么意义吗?

谢谢。

0 投票
2 回答
158 浏览

arrays - 使用非连续数字进行 F# 数组初始化

是否有一个简短的符号来初始化具有 N 的倍数的 F# 数组,其中 N > 1?例如 N = 2:

也许,类似于默认 N = 1 的情况:

0 投票
5 回答
35323 浏览

c++ - 是否需要在头文件中定义初始化列表?

最近我创建了类Square

=========头文件======

==========cpp文件======

但后来我收到很多错误。如果我删除 cpp 文件并将头文件更改为:

=========头文件======

它没有错误。这是否意味着初始化列表必须出现在头文件中?

0 投票
1 回答
1410 浏览

c++ - 在类中重新初始化 asio::socket

我发现,如果我想boost::socket用作类成员,我必须使用初始化列表来定义它,并且必须在构造函数调度之前定义它。
这意味着,我必须用一些虚拟参数证明它的构造函数,当我有我需要的数据时,我需要再次重新初始化它。

客户端.hpp

稍后,当init()调用方法时,我需要提供sockwith initialized io_service。我不知道该怎么做:

客户端.h

在这里您可以看到整个项目,没有任何内容被删除。

0 投票
1 回答
161 浏览

c++ - 如何在 C++ 的基本成员初始化部分初始化 std::map?

基本上,我有一个映射作为类中的成员变量,我想在基本成员初始化部分中使用键、值对进行初始化。

我不太确定这样做的语法是什么。我在想类似的事情:

但这不起作用。

有任何想法吗?

0 投票
2 回答
15082 浏览

c++ - 具有未知类型属性的模板类中的默认构造函数

我需要一个没有参数的默认构造函数。如何初始化a对我来说类型未知的属性。

编辑:答案已在下面的评论中给出,但仍有一些我不明白的地方。如果我有 :

我的编译器给了我这个警告:Member 'b' was no initialized in this constructor。为什么它给我这个警告b是 enum 而不是 for a

0 投票
1 回答
414 浏览

c++ - 第二个派生类中的 C++ 初始化列表

我正在尝试编写一个相对较深的类层次结构,而我的编译器不断抛出“没有匹配的函数来调用 [bass 类的默认构造函数]”。这是场景:

并且编译器在 C 类的构造函数的行上抛出错误,说“没有匹配的函数用于调用 A::A()”并告诉我使用 A::A(int)。

我知道我没有 A 类的默认构造函数,当我尝试对子类进行子类化时,编译器会感到困惑。但是,我不明白为什么。我使用了一个初始化列表来避免这种情况。如果我只使用 2 级深的类,那么它工作得很好,但是第三类给了我错误。我在这里做错了什么?

0 投票
2 回答
172 浏览

c++ - BOOST_THROW_EXCEPTION 在初始化列表中缺少三元运算符的解决方法

我经常最终使用抛出异常的三元组,这可能看起来有点奇怪,但在初始化列表中节省了一天(因此有助于编写合理的构造函数,因此有助于 RAII,...)。例如,如果参数asmart_ptr<>我们想要的 non nullptr,那么我可以发起一个类似的成员

我认为这是一种有效、合法和安全的使用方式(如果不是这样,请告诉我)。

我最近切换到 boost::exception,不幸condition ? ret_value : BOOST_THROW_EXCEPTION(exception())的是没有编译(因为编译器无法 reify typeof(ret_value)and void)。

有没有比创建一个全新的私有静态方法并放入if内部更好的解决方法?

0 投票
1 回答
98 浏览

c++ - 如何将初始化列表与基类一起使用?

鉴于以下情况:

我将如何B使用初始化列表构造 a ,该列表还构造 中的元素A?以下似乎不起作用,但我正在寻找类似的东西: