帮助我理解赋值运算符=
和隐式(标准)转换是如何工作的。
考虑语句a = b;
,其中a
和b
是具有不同算术类型的左值(例如int a = 1
,float b = 3.14
)。
据我了解,没有直接的"左值 - 左值" C ++中的隐式转换。我认为这里是隐式转换"左值到右值"发生:编译器创建一个临时浮动prvalue(称之为c
)并将b
值复制到c
。然后我们的编译器进行"浮动 - 积分转换"它创建另一个类型为int的临时prvalue(称为d
)(int是a
的类型)并转换float {{ 1}}到int c
。现在,临时prvalue b
的int值为d
。最后,编译器将3
值复制到变量d
,我们得到a
。
如果我错了,请纠正我。感谢。