![]() |
1
8
定义构造函数时,有两种方法可以“初始化”属性:
如果您没有明确地初始化初始值设定项列表中的一个属性,它仍然会为您初始化(通过调用其默认构造函数)。 所以在本质上:
当然,如果基础类型没有默认的构造函数,则此操作失败。 有多种方法可以延迟此初始化。“标准”方法是使用指针:
不过我更喜欢用 Boost.Optional 结合合适的附件:
因为boost.optional意味着在分配上没有开销,在取消引用上也没有开销(对象是在适当的位置创建的),但是带有正确的语义。 |
![]() |
2
1
我认为这是一个可能的用例 boost::optional . |
![]() |
3
0
在C++中,最好在初始化器列表中初始化成员,而不是构造函数的主体,因此事实上,您可以考虑将其他成员放到初始化列表中。 如果您正在考虑创建一个其他调用方所调用的构造函数,这将不适用于C++(参见 inheriting constructors ) |
![]() |
4
0
我认为你的解决方案是正确的方法。 您还可以通过使is指针(但它会更改代码和数据类型)来延迟对象的创建:
然后在身体里:
但我认为你的“解决方法”比解决方法更正确。 |
![]() |
5
0
你可以把
|
![]() |
6
0
如果要在类的构造函数中构造期间初始化变量,正确的方法是:
编辑:忘记提到“res”、“query”和“ep”应该是类的一部分。另一种粗略的方法(不使用插座作为指针)如下:
|
![]() |
7
0
在这种情况下,另一种选择是通过创建一个静态函数来构建ep来解决这个问题:
|
![]() |
Tom Buck · c#程序在整数列表上冻结 7 年前 |
![]() |
Ran Lavi · 在c中初始化结构的指针++ 7 年前 |
![]() |
Js_zero · 在c++中实例化对象有几种方法,它们之间有什么区别 7 年前 |
|
jfernal · 节点。js在加载其他函数之前等待初始化变量 7 年前 |
|
Victor · 在javafx中运行时更改标签文本 7 年前 |
![]() |
blubb · 在Kotlin中是否有更惯用的方法来初始化此映射? 7 年前 |
![]() |
Bing Bang · 初始化包含字节数组的结构数组 7 年前 |