![]() |
1
5
整数类型的重载解析发生在两个类别上,可以非常粗略地概括为
类似地,浮点类型的转换发生在两个类别上
有一个从整数到浮点或向后的转换。这是一种转换,而不是升职。升职的排名要比转换好,如果只需要升职,这种情况将是首选。因此,可以使用以下构造函数
对于任何整数类型,都应该选择第一组构造函数。对于任何浮点类型,都应该选择第二组构造函数。最初的两个构造函数很容易导致
也就是说,我也会使用工厂函数,因为我认为决定参数类型的意义是非常脆弱的。大多数人都希望下面的结果相等
但这会导致另一种情况。 |
![]() |
2
6
为什么不使用工厂方法而不是构造函数?工厂方法具有可自定义名称的优点。
|
![]() |
3
2
考虑使用 true typedefs . 在您的客户机代码方面,这是一项更大的工作,但是您可以保证正确性。 |
![]() |
4
1
第一个调用点列表(10),第二个调用点列表(10f)。 第二种情况下,您也可以使用10.0。 |
![]() |
5
1
如果存在构造函数1和2,则在插入的值为float或int且不应进行转换的情况下,将调用正确的构造函数。因此,只需确保将用于显式调用的数字类型(即1f和1)设置为显式。 构造函数3似乎不是一个很好的选择,因为它不是真正必要的,只会混淆代码的用户。 如果需要任何一个数字的默认值,可以使用
和
再次说明:在代码可读性方面,这似乎比代码更有害。 |
![]() |
6
1
这需要一个好的阅读 Overload Resolution . |
![]() |
7
0
我肯定会用 明确的 构造函数。在示例中,无符号整数不隐式转换。
错误消息很容易理解:
|
![]() |
Community wiki · C中有哪些耗时的操作? 1 年前 |
![]() |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
![]() |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
![]() |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |