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

c++ - C++ 初始化列出了多个初始化

C++

输出:

为什么这里a.var1不设置为6?

0 投票
3 回答
181 浏览

c++ - 在 C++ 中使用初始化列表和“=”字符定义原始类型之间有什么区别吗?

例如我想定义一个整数。我可以在 C++ 中以两种方式做到这一点:

  1. int a = 10;
  2. int a(10);

两者之间有什么区别还是只是口味问题?

0 投票
1 回答
598 浏览

c++ - C++ 11 Segfault,初始化列表中有几个布尔值

我用整数和很多布尔成员编写了一个简单的 Actor 类:

这是 actor.cpp 文件的摘录

...

那是来自actor.h头文件

这编译没有任何错误,

但是如果我运行该程序,我会在一开始就遇到一个奇怪的段错误。

现在,如果我将初始化列表中的所有布尔值放入注释 (//,left(false)) 并让 gcc 编译所有内容,程序运行完美!

怎么了?我认为最好通过初始化列表来初始化所有类成员。

这可能是一个 g++ 错误吗?

我已经尝试过使用 left() 而不是 left(false)。不:我没有在任何地方的程序中使用 new- 或 *- 运算符!

0 投票
2 回答
11914 浏览

c++ - C++ 类初始化列表示例

我正在阅读新的 Stroustrup 书中的第 17 章,我对使用初始化列表初始化一个类感到困惑。

例子:

在 .hpp 中:

在 .cpp 中:

还是在 .cpp 中:

并称之为:

我早在 1998 年就学习了 c++,直到最近这些年才断断续续地用它编程。这东西多久以前变的?我知道我仍然可以以旧方式做到这一点,但我真的很想学习新知识!

0 投票
1 回答
62 浏览

c++ - 在派生的初始化列表中获取父级的地址

是否有一种标准且安全的方法来获取子构造函数初始化列表中的一个基类的地址?

这是我想做的事情:

我有多个类,它们提供一些处理缓冲区的功能(void*,长度),并且我有多个保存数据的类(c 样式结构)。我想用最少的代码向用户提供两者的结合。这是我的想法:

这可以很好地编译 gcc,但会在 Visual Studio 上发出警告,稍后我将尝试其他嵌入式编译器。我正在寻找可以通过MISRA C++ 检查多空间检查和任何其他静态分析工具的标准解决方案。

编辑

Visual Studio 警告:警告 C4355: 'this' : used in base member initializer list

0 投票
2 回答
3454 浏览

c++ - 无论如何在初始化列表之前调用 CoInitialize() ?

这是我的 ThorDetectorSwitch.cpp 文件构造函数的 C++ 代码:

如您所见,初始化列表_mcSwitch(__uuidof(MCLControlClass))用于初始化 COM 对象(MCLControlClass,它是从 COM dll 注册的)。

我想知道无论如何我可以在这个初始化列表之前调用 CoInitialize() 吗?因为我收到“尚未调用 CoInitialize()”的异常。或任何其他方式来避免此异常?

非常感谢。

0 投票
3 回答
110 浏览

c# - 这两个 List 初始化是否相同?

我想转换

var aList = new List<string>(new string[] { "elem1", "elem2", "elem3" });

初始化成

var aList = new List<string>() { "elem1", "elem2", "elem3" };

在我们的源代码中。我相信后者没有不必要的数组创建和数组 -> 列表转换。还是前者也有?或者编译器无论如何都会优化它?我以后可以面对任何不良副作用(或没有副作用)吗?

该项目使用 .NET 4。

0 投票
0 回答
406 浏览

c++ - 初始化列表是实例化 boost::shared_ptr 的更好方法吗?

我有一个相当大的应用程序,它使用了许多线程(boost)、opencv、opengl 和 qt。

我开始遇到 boost::shared_ptr<> 对象之一的问题。

在应用程序的某些执行中,并非总是如此,boost::shared_ptr 指针用于指向无效位置,从而导致读取该位置的 UnhandledException。

由于这种行为不一致,我的猜测是 boost::shared_ptr 初始化存在某种问题。

这篇文章中的评论:Boost shared pointer initialization建议初始化列表是初始化 boost::shared_ptr 的推荐方式。Boost 的文档还说 make_shared 更快且异常安全。我正在使用 Boost 1.53.0。

按照该准则,我从构造函数中删除了初始化:

并改用初始化列表:

就目前而言,使用初始化列表显然已经解决了我的问题。但是由于 UnhandledException 并不总是被引发,我不确定使用初始化列表是否确实解决了我的问题。 编辑:它没有解决问题。异常最终确实出现了。

0 投票
1 回答
363 浏览

c++ - 为什么非静态数据成员初始化器会破坏统一初始化语法?

如果您的所有类/结构数据成员都缺少初始化程序,您可以使用统一的初始化语法来构造对象。

但是如果一个或多个成员有初始化器,统一初始化语法就失效了。

我推测添加数据成员初始化程序会自动实现一个或多个默认构造函数,并抑制构造函数的默认实现initialization_list。这是预期的标准吗?为什么它会这样工作?

0 投票
4 回答
171 浏览

c++ - C++ Constructor Initialization

I have the following code:

y1.show() should display "Krypton", but I get a runtime error (due to s1 being uninitialized when y1.show() is being called?).

Q1. Why would s1 be uninitialized when it has already been initialized in the constructor initialization list? Q2. Why don't I get the same error if I use string s1; instead of the reference?

Any help would be greatly appreciated.

Regards,

Jay.