|
|
1
2
C++中有一条规则,没有隐式转换将使用两个用户定义的转换。 这是因为这样的“长距离”转换会产生非常惊人的结果。
如果您希望能够从任何可以转换为
或者你可以把你的
你也可以在
这个模糊的代码:
存在以确保仅当要转换的类型具有所需的属性时才使用重载。
第一
每当您为一个类型创建一个转发引用隐式构造函数时,第二个子句就非常需要,或者您会遇到其他一些令人惊讶的问题。
所使用的技术称为sfinae,或者替换失败不是错误。当一种
|
|
2
2
隐式创建对象时,只允许一个用户定义的转换。自从
|
|
|
3
2
是的,这是故意的。 隐式转换序列最多可以有一个用户定义的转换(构造函数或转换函数)。 标准说(强调我的):
为了让用户定义的类型(类)隐式转换为另一个类型,必须有一个直接转换为该类型的构造函数或转换运算符。不能通过中间类型进行隐式转换(从用户定义的类型到另一个类型)。 您可以改用显式转换。 |
|
|
Noah Wilder · Swift中元组的操作符重载 8 年前 |
|
|
Salman · 指向具有数组索引运算符重载的类的指针 8 年前 |
|
|
Nom OnTheCookie · 使用向量重载C++输出 8 年前 |
|
|
J. Doe · C++重载:从友元函数切换到成员函数 8 年前 |
|
|
Ana · 使用操作符重载添加存储在vector中的类对象 8 年前 |
|
|
Matthew · 重载运算符|用于固定大小的阵列? 8 年前 |
|
|
Martin Žid · 重载运算符+=具有两个类 8 年前 |