http://en.cppreference.com/w/cpp/language/implicit_cast页面指出最多可以在隐式转换序列中完成三个转换序列:
隐式转换序列按以下顺序组成:
- 零个或一个标准转换序列
- 零或一个用户定义的转化
- 零个或一个标准转换序列
醇>
这三种情况的例子是什么?
答案 0 :(得分:1)
我不知道这三者是如何连续发生的。这意味着您可以使用用户定义的类的中间值(称为{{1})启用两种语言定义类型之间的隐式转换(让我们说int*
和char
)。 })。在我看来,您没有理由要Stuff
> int*
> Stuff
(例如)。
换句话说,从char
到A
的隐式转换意味着" B
可以被理解为A
"。为语言定义的类型添加这样的规则听起来很奇怪,甚至可以通过&#34来解释它; B
可以被理解为我的班级A
"和#34;我的班级C
可以理解为C
"。
但是为了使规则有意义,它足以提供1.和2.的示例,以及2.和3的示例。这很容易做到。
如果您还没弄清楚,只需考虑一个可以转换为B
(用户定义Date
的课程(让我们说int
)。并且可以从Date::int()
(复制构造函数)创建。然后,通过考虑转换int
> int
和long
到short
,您可以获得示例。
int