x=(const Foo &) *y;
是作业.我看到显式转换为const引用的唯一原因是Foo::operator=(const Foo &)
如果Foo::operator=(Foo &)
也存在则调用赋值.
x=(const Foo &) y;
line调用未定义的行为.
更喜欢避免C风格的演员阵容; 他们很容易出错.你使编译器沉默,所以它们太危险了.
编辑:这个答案在当时是相关的,当时问题y
在演员之前没有被取消引用const Foo &
.有关*y
编辑后问题的答案,请参阅n0rd给出的答案