C ++隐式转换序列中的三次转换

时间:2015-07-31 00:38:33

标签: c++ implicit-conversion

http://en.cppreference.com/w/cpp/language/implicit_cast页面指出最多可以在隐式转换序列中完成三个转换序列:

  

隐式转换序列按以下顺序组成:

     
      
  1. 零个或一个标准转换序列
  2.   
  3. 零或一个用户定义的转化
  4.   
  5. 零个或一个标准转换序列
  6.   

这三种情况的例子是什么?

1 个答案:

答案 0 :(得分:1)

我不知道这三者是如何连续发生的。这意味着您可以使用用户定义的类的中间值(称为{{1})启用两种语言定义类型之间的隐式转换(让我们说int*char)。 })。在我看来,您没有理由要Stuff> int*> Stuff(例如)。

换句话说,从charA的隐式转换意味着" B可以被理解为A"。为语言定义的类型添加这样的规则听起来很奇怪,甚至可以通过&#34来解释它; B可以被理解为我的班级A"和#34;我的班级C可以理解为C"。

但是为了使规则有意义,它足以提供1.和2.的示例,以及2.和3的示例。这很容易做到。

如果您还没弄清楚,只需考虑一个可以转换为B(用户定义Date的课程(让我们说int)。并且可以从Date::int()(复制构造函数)创建。然后,通过考虑转换int> intlongshort,您可以获得示例。

int