以下是cpprefrence的一些部分:http://en.cppreference.com/w/cpp/language/implicit_cast
隐式转换序列按以下顺序组成:
1)零个或一个标准转换序列
2)零或一个用户定义的转换
3)零个或一个标准转换序列
我认为1) - > 2)或2) - > 3)转换顺序很常见。 但是有1) - > 2) - > 3)的例子?
答案 0 :(得分:2)
这个怎么样:
struct X {
X(int a) {}
};
const X x = 5.0;
首先是从double
到int
的标准转换,然后是从int
到X
的用户定义转换,然后是从X
到{{}的标准转换{1}}。 (根据c ++参考,从const X
到non-const
的资格调整是一种标准转换。)
我对最后一次转换不是100%肯定,也许我们可以说对象已经构造成const?我们也可以使用const
代替volatile
。