|
|
1
7
我的第一直觉是将失败点从构造函数中取出,并创建一个初始化方法。 这样就可以创建对象而不必担心失败,然后调用init()函数。该函数可以为成功/失败返回类似int的值,例如-1(如果失败发生)。 是的,这是一个额外的步骤,但它确实让您绕过了不能使构造函数失败的问题。 |
|
|
2
4
这很难看,但要做到这一点,方法是保留对象的“特殊状态”,以表示“构建失败”。然后您必须查询那个状态。呸! |
|
|
3
2
它们基本上不在构造函数中执行任何操作。 也从谷歌C++风格指南: 构造函数中完成工作 链接链接 一般来说,构造函数应该只将成员变量设置为其初始值。任何复杂的初始化都应该在显式init()方法中进行。 |
|
|
4
2
您可以执行以下操作:
在过去,我经常使用这种模式(因为我必须这样做),但也就是说,我更喜欢我的构造函数抛出异常。上面的内容充其量是不雅的,充其量是相当繁琐的。 |
|
|
5
2
我对C++是新的,所以我的观点不值得这么多,但是我至少遇到了几种不同的方法。
在我最近使用的一个库中,每个构造函数都有一个
我看到的另一个有
不过,我最近读到,异常并不像以前那么缓慢和笨拙,可以优雅地实现它们。谷歌可能会因为任何原因而禁止它们,但它们仍然是C++语言的一部分。与其用螺丝刀盖房子,不如用别人给你的工具。 |
|
6
1
您可以设置一个类/对象字段来检查是否发生了错误。 |
|
KiraHoneybee · 具有构造函数参数的模板化类 4 年前 |
|
|
nick2225 · 隐式调用复制构造函数? 4 年前 |
|
|
nohaga · 为什么在本例中p3需要默认构造函数? 4 年前 |
|
|
Aadil Hoda · 为什么类类型的成员需要初始化? 4 年前 |
|
|
EloiGG · 具有任意类型的变量的可数的C++函数 4 年前 |