问题标签 [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.
c++ - 我可以在 Qt 中初始化一个继承的类
我创建了一个名为 video 的 Qt 类,如下所示:
视频.h
视频.cpp
并发生以下错误:
此类扩展名为的类QDjangoModel
(包含在QDjango中)并QDjangoModel
扩展QObject
。当我在 Qt creator 上创建类时,它会创建以下模板:
我认为: QObject(parent)
是父母的构造函数,所以我将其替换为: QDjangoModel(parent)
但似乎不正确。
问题:
Q1。什么: QObject(parent)
意思?
我搜索了初始化列表,我理解了以下代码的含义:
在这种情况下,
在构造函数执行时执行,对吗?
但就我而言,
或者
不意味着
或者
显然,所以我对m_name(name)
案例的理解不适用于QObject(parent)
案例。
Q2。我该如何解决这个错误?
c++ - C++ - 用实例初始化类成员
我的问题如下:假设我有:
现在我有另一个类,其中 Bar 作为成员变量:
我想编写 BarUser 的构造函数,但是我想用一个 Foo 成员初始化 Bar,该成员的整数为 3。IE:
但是,由于我将 Bar 作为类成员,因此我无法在初始化列表中编写所有这些代码......我的意思是:
假设 Bar 不允许赋值运算符 - 我如何按预期初始化它?
谢谢!
c++ - 在 C++ 中的构造函数初始化列表中初始化 char 数组
像这样使用初始化可以吗?
和这个?
两者都在 gcc 4.7.2 中给我一个错误:
错误:数组用作初始化器
Comeau 编译了两者。
c++ - C++ 构造函数与初始化列表速度比较
构造函数和初始化列表之间的执行时间是否有任何差异?(或者这只是编码偏好的问题)。我有一组需要经常创建的对象,并且想知道使用初始化列表而不是构造函数是否有任何性能提升。
如果我要创建一百万个 A 类实例和另外一百万个 B 类实例,那么哪个选择会更好(对象代表网络中生成的数据包,因此这些数字)。
如果任何构造函数对于原始类型来说比另一个更快(如示例中所示),如果将 a 和 b 替换为类型会更快吗?
类型示例:
c++ - C++ - 在初始化类成员之前运行一个函数
我有 2 个资源管理类DeviceContext
,OpenGLContext
它们都是class DisplayOpenGL
. 资源生命周期与DisplayOpenGL
. 初始化看起来像这样(伪代码):
问题是对 SetPixelFormat() 的调用,因为我不能在DisplayOpenGL
c'tor 的初始化程序列表中这样做:
我可以看到的解决方案:
- 插入
m_dummy(m_device.SetPixelFormat())
- 不起作用,因为 SetPixelFormat() 没有 retval。(如果它有 retval,你应该这样做吗?) - 使用
unique_ptr<OpenGLContext> m_opengl;
而不是OpenGLContext m_opengl;
.
然后初始化为m_opengl()
,在 c'tor 正文中调用 SetPixelFormat() 并使用m_opengl.reset(new OpenGLContext);
SetPixelFormat()
来自DeviceContext
c'tor 的电话
这些解决方案中哪一个更可取,为什么?有什么我想念的吗?
如果重要的话,我在 Windows 上使用 Visual Studio 2010 Express。
编辑:我最感兴趣的是决定其中一种方法所涉及的权衡。
m_dummy()
不起作用并且看起来不优雅,即使它会unique_ptr<X>
对我来说很有趣 - 我什么时候会使用它而不是“普通”X m_x
成员?除了初始化问题外,这两种方法在功能上似乎或多或少是等效的。SetPixelFormat()
来自c'tor的电话DeviceContext
当然有效,但对我来说感觉不干净。DeviceContext
应该管理资源并启用它的使用,而不是对用户强加一些随机像素格式策略。- stijn's
InitDev()
看起来是最干净的解决方案。
在这种情况下,我几乎总是想要一个基于智能指针的解决方案吗?
c++ - FILE*、fopen_s 和初始化列表
我有一个这样声明的类(仅显示相关部分):
构造函数打开一个文件:
它在另一个类中使用,如下所示:
在 Y 的构造函数中,myX 通过初始化列表进行初始化,并在其上调用一个方法:
当我单步执行 X 的构造函数时,流被分配和写入而没有错误。如果我在 Y 的构造函数的左大括号处放置一个断点,则流的值与 X 的构造函数期间相同。但是,当我进入 Y 的构造函数的主体时,流的值会发生变化,并且下次使用它(例如在 init() 中)导致访问冲突。如果我将 Y 更改为存储指向 X 的指针而不是直接引用并在堆上分配 X,则一切正常。我怀疑它与 fopen_s 分配 FILE* 的位置有关,但我无法确认这一点。谁能解释为什么这会失败?
c++ - 在构造函数初始化列表中初始化成员数组(C++11之前)
据我所知,在 C++11 之前,在构造函数初始化列表中初始化成员数组的唯一方法是执行以下操作:
for
但是,有几个人告诉我他们不赞成这种方法,并且在构造函数主体的循环中对其进行零初始化可能会更安全/更具可读性。
我还没有 C++11 支持,所以我不能使用初始化列表等。有没有人听说过阻止在构造函数初始化列表中初始化成员数组的指导方针?
此外,测试表明没有,但是将这种语法用于多维数组应该没有任何问题,对吗?(例如,这不是某些编译器出于某种原因搞砸的标准的一部分......)
我并不是说这是一个主观问题——我只是想知道是否有充分的理由使用/不使用上述语法。
非常感谢您的帮助。
c++ - 在没有初始化列表的情况下,在 C++ 的头文件中为 const int 赋值
我有 17 个整数常量,我想在我的课堂上作为私有常量。真的有必要使用初始化列表吗?
我在某处读到我可以为头文件中的常量赋值,但它似乎不起作用。我收到此错误消息:
c++ - 在构造函数初始化列表中初始化字符串流引用成员,没有任何内容
我试图初始化一个没有任何内容的字符串流引用成员,说我希望它引用 null 或者只是让它未初始化。
.hpp 文件
.cpp 文件
编译器给出: Error 1 error C2758: 'Class::css' : must be initialized in constructor base/member initializer list
我必须初始化初始化列表中的所有变量吗?因为我没有将任何字符串流引用传递给构造函数,我该如何初始化它?或者,如果我不想初始化它,请将其留空。我该怎么做?