C++ C++;隐式转换:转换的顺序
以下是CPPreference中的一些部分: 隐式转换序列按以下顺序组成: 1) 零或一个标准转换序列 2) 零或一个用户定义的转换 3) 零或一个标准转换序列 我认为1)->2)或2)->3)转换顺序是常见的。 但是有一个例子是1)->2)->3) 这个呢:C++ C++;隐式转换:转换的顺序,c++,type-conversion,C++,Type Conversion,以下是CPPreference中的一些部分: 隐式转换序列按以下顺序组成: 1) 零或一个标准转换序列 2) 零或一个用户定义的转换 3) 零或一个标准转换序列 我认为1)->2)或2)->3)转换顺序是常见的。 但是有一个例子是1)->2)->3) 这个呢: struct X { X(int a) {} }; const X x = 5.0; 首先是从double到int的标准转换,然后是从int到X的用户定义转换,然后是从X到const X的标准转换。(从代码< >非const >
struct X {
X(int a) {}
};
const X x = 5.0;
首先是从double
到int
的标准转换,然后是从int
到X
的用户定义转换,然后是从X
到const X
的标准转换。(从代码< >非const <代码> >代码> const <代码>的资格调整是根据C++引用的标准转换。
我不是100%确定最后一次转换,也许我们可以说对象已经被构造成const?我们也可以使用volatile
代替const
。void-fun(constx);乐趣(5.0)我从你的例子中想出了这个。