将对象转换为引用?

Afi*_*efh 11 c++ casting reference

我最近一直在阅读一些OSS代码,偶然发现了这个奇特的部分:

class Foo { ..... };
void bar() {
    Foo x;
   Foo *y=new Foo();
   x=(const Foo &) *y;
}
Run Code Online (Sandbox Code Playgroud)

对于我的生活,我找不到关于将对象转换为const引用的行为的文档.

n0r*_*0rd 8

x=(const Foo &) *y;作业.我看到显式转换为const引用的唯一原因是Foo::operator=(const Foo &)如果Foo::operator=(Foo &)也存在则调用赋值.


ust*_*sta 6

x=(const Foo &) y;line调用未定义的行为.
更喜欢避免C风格的演员阵容; 他们很容易出错.你使编译器沉默,所以它们太危险了.

编辑:这个答案在当时是相关的,当时问题y在演员之前没有被取消引用const Foo &.有关*y编辑后问题的答案,请参阅n0rd给出的答案