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

c++ - C++:继承字段的初始化

我有一个关于在派生类的构造函数中初始化继承成员的问题。示例代码:

这段代码给了我以下输出:

In constructor 'B::B()': Line 10: error: class 'B' does not have any field named 'm_int'

(见http://codepad.org/tn1weFFP

我猜为什么会这样?m_int应该是 的成员,并且在 in 的初始化发生时B父类A应该已经被初始化(因为父构造函数在继承类的成员初始化之前运行)。我的推理哪里出错了?这段代码到底发生了什么?m_intB

EDIT:我知道初始化此成员的其他可能性(基构造函数或派生构造函数中的赋值),但我想了解为什么我尝试它的方式是非法的?一些特定的 C++ 语言功能之类的?如果可能,请指出 C++ 标准中的一段。

0 投票
3 回答
1620 浏览

c++ - 如何从 C++ 中的子 c-tor 初始化超类参数?

观看以下示例:

显然,当 "b" 将被创建时,将在 B 的参数初始化之前调用 A 的 ctor。

这条规则阻止我创建简化类初始化的“包装”类。

这样做的“正确方法”是什么?

谢谢,阿米尔

PS:在我的特殊情况下,参数不是原语,这个例子只是帮助我解释自己。

0 投票
2 回答
1002 浏览

c++ - 将“this”对象传递给初始化列表

我已将问题简化为以下示例代码:

在不更改或添加公共成员的情况下,如何为训练器创建构造函数,以便在初始化列表中创建 myPokemon 时,“myTrainer”指向正在创建的训练器?

这是我尝试过的:

但当然“this”不是正确的类型。我无法更改 Charizard 构造函数接受的内容(它是公共成员),所以我不确定该怎么做。有任何想法吗?

注意:标题可能需要一些工作。

0 投票
12 回答
50380 浏览

c++ - 在这种特定情况下,使用成员初始值设定项列表和在构造函数中赋值有区别吗?

在内部和关于生成的代码之间,是否有真正的区别:

谢谢...

0 投票
2 回答
769 浏览

c++ - C++ 中的 Base-from-Member 成语

以下代码来自这里

我真的不明白评论。为什么“不能在 std::ostream 之前初始化 buf”?我可以使用一些帮助来理解这一点吗?

0 投票
1 回答
1903 浏览

c++ - C++ 继承的模板类和初始化列表

我一直在将我的一些数学类转换为模板并使用初始化列表,当继承的类需要在初始化时访问基类数据成员时遇到了问题。

这是代码:

是否可以在继承的类上使用初始化列表?

0 投票
2 回答
144 浏览

c++ - 初始化列表后的大括号

是否有一种语法可以让我在初始化列表之后跳过大括号?我知道这是一件小事,但我想在我的代码中尽可能简洁。

0 投票
6 回答
34286 浏览

c++ - C++ 初始化列表 - 我不明白

在Effective C++中,据说初始化列表中的数据元素需要按照它们的声明顺序列出。进一步说,这样做的原因是数据元素的析构函数以其构造函数的相反顺序被调用。

但我只是不明白这怎么可能是一个问题......

0 投票
2 回答
521 浏览

c++ - 二维数组的初始化如何工作?

在一个小的 C++ 示例中遇到了下面显示的代码:

然后在类的构造函数中:

这里,ParallelMultiply 是类,mat1、mat2、result_mat 是二维数组,ARRAY_SIZE 是定义的数组长度。但是如何用二维数组初始化 arr1、arr2 和 arr3?请解释。

谢谢!!

0 投票
6 回答
323 浏览

c++ - 为什么 C++ 初始化列表在大括号之前?

我想知道以下两个班级有什么区别。

示例 1:

示例 2:

为什么示例1通过而最后一个是错误的?谢谢