![]() |
1
1
假设您希望为任何整型(而不仅仅是 int 特别是,您可以做的一件事是将其作为模板函数提供,并使用boost.enableif从可用的重载集中移除这些重载,如果操作数不是整型的话。
当然,也可以使用不同的条件,使这些重载仅在t=int时可用:
至于设计类,也许您可以更多地依赖模板。例如,构造函数可以是一个模板,同样,如果需要区分整型和实型,应该可以使用这种技术。 |
![]() |
2
4
你应该超载
欲了解更多细节,请阅读13.3节的C++ 03标准。感觉疼痛。
看来我也不知道了。:
UncleBens
报告说,仅添加float并不能解决问题,因为版本
|
![]() |
3
3
如果您有只能用一个参数调用的构造函数,那么您实际上创建了一个隐式转换运算符。在您的示例中,无论
因此,一个很好的经验法则是,每当编写只需一个参数即可调用的构造函数时(请注意,这个参数
你必须将你的课程改为:
我发现这条规则很少有例外。(
编辑:
抱歉,我错过了不允许隐式转换的要点
我看到的唯一防止这种情况的方法是为
|
![]() |
5
0
同意SBI,您应该明确地将单参数构造函数设置为显式的。 但是,您可以避免使用模板编写的运算符<gt;函数发生爆炸:
根据函数中的代码,只能使用支持转换的类型进行编译。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 5 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 5 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 5 月前 |