c++隐式转换:转换顺序

C++ implicit conversions: Order of the conversions

本文关键字:转换 顺序 c++      更新时间:2023-10-16

以下是来自cppreference的部分内容:http://en.cppreference.com/w/cpp/language/implicit_cast

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

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

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

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

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

这个呢:

struct X {
  X(int a) {}
};
const X x = 5.0;

首先是doubleint的标准转换,然后是intX的自定义转换,然后是Xconst X的标准转换。(从non-constconst的资格调整是根据c++参考标准进行的一种标准转换)

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