C ++隐式转换:转化顺序

时间:2015-09-07 07:37:28

标签: c++ type-conversion

以下是cpprefrence的一些部分:http://en.cppreference.com/w/cpp/language/implicit_cast

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

1)零个或一个标准转换序列

2)零或一个用户定义的转换

3)零个或一个标准转换序列

我认为1) - > 2)或2) - > 3)转换顺序很常见。  但是有1) - > 2) - > 3)的例子?

1 个答案:

答案 0 :(得分:2)

这个怎么样:

struct X {
  X(int a) {}
};

const X x = 5.0;

首先是从doubleint的标准转换,然后是从intX的用户定义转换,然后是从X到{{}的标准转换{1}}。 (根据c ++参考,从const Xnon-const的资格调整是一种标准转换。)

我对最后一次转换不是100%肯定,也许我们可以说对象已经构造成const?我们也可以使用const代替volatile